@@ -44,7 +44,7 @@ type Library struct {
44
44
type Release struct {
45
45
Author string
46
46
Version * semver.Version
47
- Dependencies []semver. Dependency
47
+ Dependencies []* Dependency
48
48
Maintainer string
49
49
Sentence string
50
50
Paragraph string
@@ -85,7 +85,7 @@ func (r *Release) GetVersion() *semver.Version {
85
85
}
86
86
87
87
// GetDependencies returns the dependencies of this library.
88
- func (r * Release ) GetDependencies () []semver. Dependency {
88
+ func (r * Release ) GetDependencies () []* Dependency {
89
89
return r .Dependencies
90
90
}
91
91
@@ -146,29 +146,16 @@ func (idx *Index) FindLibraryUpdate(lib *libraries.Library) *Release {
146
146
147
147
// ResolveDependencies returns the dependencies of a library release.
148
148
func (idx * Index ) ResolveDependencies (lib * Release ) []* Release {
149
- // Box lib index *Release to be digested by dep-resolver
150
- // (TODO: There is a better use of golang interfaces to avoid this?)
151
- allReleases := map [string ]semver.Releases {}
149
+ // Create and populate the library resolver
150
+ resolver := semver .NewResolver [* Release , * Dependency ]()
152
151
for _ , indexLib := range idx .Libraries {
153
- releases := semver.Releases {}
154
152
for _ , indexLibRelease := range indexLib .Releases {
155
- releases = append ( releases , indexLibRelease )
153
+ resolver . AddRelease ( indexLibRelease )
156
154
}
157
- allReleases [indexLib .Name ] = releases
158
155
}
159
156
160
157
// Perform lib resolution
161
- archive := & semver.Archive {
162
- Releases : allReleases ,
163
- }
164
- deps := archive .Resolve (lib )
165
-
166
- // Unbox resolved deps back into *Release
167
- res := []* Release {}
168
- for _ , dep := range deps {
169
- res = append (res , dep .(* Release ))
170
- }
171
- return res
158
+ return resolver .Resolve (lib )
172
159
}
173
160
174
161
// Versions returns an array of all versions available of the library
0 commit comments