@@ -44,35 +44,36 @@ func (set Releases[R, D]) SortDescent() {
44
44
})
45
45
}
46
46
47
- // Archive contains all Releases set to consider for dependency resolution
48
- type Archive [R Release [D ], D Dependency ] struct {
47
+ // Resolver is a container with references to all Releases to consider for
48
+ // dependency resolution
49
+ type Resolver [R Release [D ], D Dependency ] struct {
49
50
releases map [string ]Releases [R , D ]
50
51
}
51
52
52
- // NewArchive creates a new archive
53
- func NewArchive [R Release [D ], D Dependency ]() * Archive [R , D ] {
54
- return & Archive [R , D ]{
53
+ // NewResolver creates a new archive
54
+ func NewResolver [R Release [D ], D Dependency ]() * Resolver [R , D ] {
55
+ return & Resolver [R , D ]{
55
56
releases : map [string ]Releases [R , D ]{},
56
57
}
57
58
}
58
59
59
60
// AddRelease adds a release to this archive
60
- func (ar * Archive [R , D ]) AddRelease (rel R ) {
61
+ func (ar * Resolver [R , D ]) AddRelease (rel R ) {
61
62
relName := rel .GetName ()
62
63
ar .releases [relName ] = append (ar .releases [relName ], rel )
63
64
}
64
65
65
66
// AddReleases adds all the releases to this archive
66
- func (ar * Archive [R , D ]) AddReleases (rels ... R ) {
67
+ func (ar * Resolver [R , D ]) AddReleases (rels ... R ) {
67
68
for _ , rel := range rels {
68
69
relName := rel .GetName ()
69
70
ar .releases [relName ] = append (ar .releases [relName ], rel )
70
71
}
71
72
}
72
73
73
74
// Resolve will try to depp-resolve dependencies from the Release passed as
74
- // arguent using a backtracking algorithm.
75
- func (ar * Archive [R , D ]) Resolve (release R ) Releases [R , D ] {
75
+ // arguent using a backtracking algorithm. This function is NOT thread-safe.
76
+ func (ar * Resolver [R , D ]) Resolve (release R ) Releases [R , D ] {
76
77
// Initial empty state of the resolver
77
78
solution := map [string ]R {}
78
79
depsToProcess := []D {}
@@ -96,7 +97,7 @@ func hashDependency[D Dependency](dep D) dependencyHash {
96
97
return dependencyHash (dep .GetName () + "/" + dep .GetConstraint ().String ())
97
98
}
98
99
99
- func (ar * Archive [R , D ]) resolve (solution map [string ]R , depsToProcess []D , problematicDeps map [dependencyHash ]int ) Releases [R , D ] {
100
+ func (ar * Resolver [R , D ]) resolve (solution map [string ]R , depsToProcess []D , problematicDeps map [dependencyHash ]int ) Releases [R , D ] {
100
101
debug ("deps to process: %s" , depsToProcess )
101
102
if len (depsToProcess ) == 0 {
102
103
debug ("All dependencies have been resolved." )
0 commit comments