66
77package semver
88
9- import (
10- "fmt"
11- )
12-
139// Dependency represents a dependency, it must provide methods to return Name and Constraints
1410type Dependency interface {
1511 GetName () string
@@ -54,20 +50,8 @@ func (ar *Archive) Resolve(release Release) []Release {
5450 return ar .resolve (solution , depsToProcess )
5551}
5652
57- // To be redefined in Tests to increase output
58- var verbose = false
59-
6053func (ar * Archive ) resolve (solution map [string ]Release , depsToProcess []Dependency ) []Release {
61- debug := func (msg string ) {}
62- if verbose {
63- debug = func (msg string ) {
64- for i := 0 ; i < len (solution ); i ++ {
65- fmt .Print (" " )
66- }
67- fmt .Println (msg )
68- }
69- }
70- debug (fmt .Sprintf ("deps to process: %s" , depsToProcess ))
54+ debug ("deps to process: %s" , depsToProcess )
7155 if len (depsToProcess ) == 0 {
7256 debug ("All dependencies have been resolved." )
7357 res := []Release {}
@@ -80,29 +64,29 @@ func (ar *Archive) resolve(solution map[string]Release, depsToProcess []Dependen
8064 // Pick the first dependency in the deps to process
8165 dep := depsToProcess [0 ]
8266 depName := dep .GetName ()
83- debug (fmt . Sprintf ( "Considering next dep: %s" , dep ) )
67+ debug ("Considering next dep: %s" , dep )
8468
8569 // If a release is already picked in the solution check if it match the dep
8670 if existingRelease , has := solution [depName ]; has {
8771 if match (existingRelease , dep ) {
88- debug (fmt . Sprintf ( "%s already in solution and matching" , existingRelease ) )
72+ debug ("%s already in solution and matching" , existingRelease )
8973 return ar .resolve (solution , depsToProcess [1 :])
9074 }
91- debug (fmt . Sprintf ( "%s already in solution do not match... rollingback" , existingRelease ) )
75+ debug ("%s already in solution do not match... rollingback" , existingRelease )
9276 return nil
9377 }
9478
9579 // Otherwise start backtracking the dependency
9680 releases := ar .Releases [dep .GetName ()].FilterBy (dep )
97- debug (fmt . Sprintf ( "releases matching criteria: %s" , releases ) )
81+ debug ("releases matching criteria: %s" , releases )
9882 for _ , release := range releases {
99- debug (fmt . Sprintf ( "try with %s %s" , release , release .GetDependencies () ))
83+ debug ("try with %s %s" , release , release .GetDependencies ())
10084 solution [depName ] = release
10185 res := ar .resolve (solution , append (depsToProcess [1 :], release .GetDependencies ()... ))
10286 if res != nil {
10387 return res
10488 }
105- debug (fmt . Sprintf ( "%s did not work..." , release ) )
89+ debug ("%s did not work..." , release )
10690 delete (solution , depName )
10791 }
10892 return nil
0 commit comments