23 lines
586 B
Go
23 lines
586 B
Go
package registry
|
|
|
|
import "sort"
|
|
|
|
func (r *Registry) List() []Package {
|
|
r.mu.RLock()
|
|
defer r.mu.RUnlock()
|
|
result := make([]Package, 0, len(r.packages))
|
|
for _, versions := range r.packages {
|
|
if len(versions) == 0 {
|
|
continue
|
|
}
|
|
keys := make([]string, 0, len(versions))
|
|
for version := range versions {
|
|
keys = append(keys, version)
|
|
}
|
|
sort.Slice(keys, func(i, j int) bool { return CompareVersions(keys[i], keys[j]) > 0 })
|
|
result = append(result, versions[keys[0]])
|
|
}
|
|
sort.Slice(result, func(i, j int) bool { return result[i].Name < result[j].Name })
|
|
return result
|
|
}
|