mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-07-25 13:37:51 +00:00
Refactor RefList.FilterLatestRefs to be method instead of standalone func.
This commit is contained in:
@@ -43,7 +43,7 @@ func aptlySnapshotMerge(cmd *commander.Command, args []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if latest {
|
if latest {
|
||||||
deb.FilterLatestRefs(result)
|
result.FilterLatestRefs()
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceDescription := make([]string, len(sources))
|
sourceDescription := make([]string, len(sources))
|
||||||
|
|||||||
+5
-5
@@ -314,15 +314,15 @@ func (l *PackageRefList) Merge(r *PackageRefList, overrideMatching bool) (result
|
|||||||
// packages and reduces it to only the latest of each package. The operations
|
// packages and reduces it to only the latest of each package. The operations
|
||||||
// are done in-place. This implements a "latest wins" approach which can be used
|
// are done in-place. This implements a "latest wins" approach which can be used
|
||||||
// while merging two or more snapshots together.
|
// while merging two or more snapshots together.
|
||||||
func FilterLatestRefs(r *PackageRefList) {
|
func (l *PackageRefList) FilterLatestRefs() {
|
||||||
var (
|
var (
|
||||||
lastArch, lastName, lastVer []byte
|
lastArch, lastName, lastVer []byte
|
||||||
arch, name, ver []byte
|
arch, name, ver []byte
|
||||||
parts [][]byte
|
parts [][]byte
|
||||||
)
|
)
|
||||||
|
|
||||||
for i := 0; i < len(r.Refs); i++ {
|
for i := 0; i < len(l.Refs); i++ {
|
||||||
parts = bytes.Split(r.Refs[i][1:], []byte(" "))
|
parts = bytes.Split(l.Refs[i][1:], []byte(" "))
|
||||||
arch, name, ver = parts[0], parts[1], parts[2]
|
arch, name, ver = parts[0], parts[1], parts[2]
|
||||||
|
|
||||||
if bytes.Equal(arch, lastArch) && bytes.Equal(name, lastName) {
|
if bytes.Equal(arch, lastArch) && bytes.Equal(name, lastName) {
|
||||||
@@ -332,10 +332,10 @@ func FilterLatestRefs(r *PackageRefList) {
|
|||||||
// Remove the older refs from the result
|
// Remove the older refs from the result
|
||||||
if vres > 0 {
|
if vres > 0 {
|
||||||
// ver[i] > ver[i-1], remove element i-1
|
// ver[i] > ver[i-1], remove element i-1
|
||||||
r.Refs = append(r.Refs[:i-1], r.Refs[i:]...)
|
l.Refs = append(l.Refs[:i-1], l.Refs[i:]...)
|
||||||
} else {
|
} else {
|
||||||
// ver[i] < ver[i-1], remove element i
|
// ver[i] < ver[i-1], remove element i
|
||||||
r.Refs = append(r.Refs[:i], r.Refs[i+1:]...)
|
l.Refs = append(l.Refs[:i], l.Refs[i+1:]...)
|
||||||
arch, name, ver = lastArch, lastName, lastVer
|
arch, name, ver = lastArch, lastName, lastVer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -310,7 +310,7 @@ func (s *PackageRefListSuite) TestFilterLatestRefs(c *C) {
|
|||||||
rl.Add(packages[7])
|
rl.Add(packages[7])
|
||||||
|
|
||||||
result := NewPackageRefListFromPackageList(rl)
|
result := NewPackageRefListFromPackageList(rl)
|
||||||
FilterLatestRefs(result)
|
result.FilterLatestRefs()
|
||||||
|
|
||||||
c.Check(toStrSlice(result), DeepEquals,
|
c.Check(toStrSlice(result), DeepEquals,
|
||||||
[]string{"Pi386 dpkg 1.6", "Pi386 lib 1.2"})
|
[]string{"Pi386 dpkg 1.6", "Pi386 lib 1.2"})
|
||||||
|
|||||||
Reference in New Issue
Block a user