@@ -246,13 +246,52 @@ func extractBasePackageNameFromFile(fullName string) string {
246246// extractBaseNameFromDep takes a potentially complex requirement string
247247// and returns only the base package/capability name.
248248func extractBaseNameFromDep (req string ) string {
249- if strings .HasPrefix (req , "(" ) && strings .Contains (req , " " ) {
250- trimmed := strings .TrimPrefix (req , "(" )
251- parts := strings .Fields (trimmed )
249+ req = strings .TrimSpace (req )
250+ if req == "" {
251+ return ""
252+ }
253+
254+ // Handle complex conditional dependencies with "if" clauses
255+ if strings .Contains (req , ") if " ) {
256+ // Extract content between first '((' and ') if'
257+ if start := strings .Index (req , "((" ); start != - 1 {
258+ if end := strings .Index (req , ") if " ); end != - 1 {
259+ inner := req [start + 2 : end ]
260+ // Handle multiple operators in priority order
261+ for _ , op := range []string {" >= " , " <= " , " > " , " < " , " = " } {
262+ if idx := strings .Index (inner , op ); idx != - 1 {
263+ return strings .TrimSpace (inner [:idx ])
264+ }
265+ }
266+ return strings .TrimSpace (inner )
267+ }
268+ }
269+ }
270+
271+ // Handle simple parentheses cases
272+ if strings .HasPrefix (req , "(" ) && strings .HasSuffix (req , ")" ) {
273+ inner := req [1 : len (req )- 1 ]
274+ inner = strings .TrimSpace (inner )
275+ // Handle version operators in priority order
276+ for _ , op := range []string {" >= " , " <= " , " > " , " < " , " = " } {
277+ if idx := strings .Index (inner , op ); idx != - 1 {
278+ return strings .TrimSpace (inner [:idx ])
279+ }
280+ }
281+ parts := strings .Fields (inner )
252282 if len (parts ) > 0 {
253- req = parts [0 ]
283+ return parts [0 ]
254284 }
285+ return inner
255286 }
287+
288+ // Handle regular cases with operators
289+ for _ , op := range []string {" >= " , " <= " , " > " , " < " , " = " } {
290+ if idx := strings .Index (req , op ); idx != - 1 {
291+ return strings .TrimSpace (req [:idx ])
292+ }
293+ }
294+
256295 finalParts := strings .Fields (req )
257296 if len (finalParts ) == 0 {
258297 return ""
0 commit comments