mirror of
https://github.com/EnumeratedDev/bpm.git
synced 2026-09-16 02:26:12 +00:00
Add sorting by installation date and last update date in 'list' subcommand
This commit is contained in:
+19
-16
@@ -358,20 +358,21 @@ func showPackageList() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
installedPackages := make([]struct {
|
type installedPackage struct {
|
||||||
pkgInfo bpmlib.PackageInfo
|
pkgInfo bpmlib.PackageInfo
|
||||||
installedSize int64
|
installedSize int64
|
||||||
}, len(installedPackageNames))
|
localInfo bpmlib.PackageLocalInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
installedPackages := make([]installedPackage, len(installedPackageNames))
|
||||||
for i, pkgName := range installedPackageNames {
|
for i, pkgName := range installedPackageNames {
|
||||||
pkgInfo := *bpmlib.GetPackageInfo(pkgName, rootDir)
|
pkgInfo := *bpmlib.GetPackageInfo(pkgName, rootDir)
|
||||||
installedSize := bpmlib.GetPackage(pkgName, rootDir).GetInstalledSize()
|
bpmpkg := bpmlib.GetPackage(pkgName, rootDir)
|
||||||
|
|
||||||
installedPackages[i] = struct {
|
installedPackages[i] = installedPackage{
|
||||||
pkgInfo bpmlib.PackageInfo
|
|
||||||
installedSize int64
|
|
||||||
}{
|
|
||||||
pkgInfo: pkgInfo,
|
pkgInfo: pkgInfo,
|
||||||
installedSize: installedSize,
|
installedSize: bpmpkg.GetInstalledSize(),
|
||||||
|
localInfo: bpmpkg.LocalInfo,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -382,25 +383,27 @@ func showPackageList() {
|
|||||||
|
|
||||||
switch sortPackages {
|
switch sortPackages {
|
||||||
case "", "name":
|
case "", "name":
|
||||||
slices.SortFunc(installedPackages, func(a, b struct {
|
slices.SortFunc(installedPackages, func(a, b installedPackage) int {
|
||||||
pkgInfo bpmlib.PackageInfo
|
|
||||||
installedSize int64
|
|
||||||
}) int {
|
|
||||||
return strings.Compare(a.pkgInfo.Name, b.pkgInfo.Name)
|
return strings.Compare(a.pkgInfo.Name, b.pkgInfo.Name)
|
||||||
})
|
})
|
||||||
slices.SortFunc(databaseEntries, func(a, b *bpmlib.BPMDatabaseEntry) int {
|
slices.SortFunc(databaseEntries, func(a, b *bpmlib.BPMDatabaseEntry) int {
|
||||||
return strings.Compare(a.Info.Name, b.Info.Name)
|
return strings.Compare(a.Info.Name, b.Info.Name)
|
||||||
})
|
})
|
||||||
case "size":
|
case "size":
|
||||||
slices.SortFunc(installedPackages, func(a, b struct {
|
slices.SortFunc(installedPackages, func(a, b installedPackage) int {
|
||||||
pkgInfo bpmlib.PackageInfo
|
|
||||||
installedSize int64
|
|
||||||
}) int {
|
|
||||||
return int(b.installedSize - a.installedSize)
|
return int(b.installedSize - a.installedSize)
|
||||||
})
|
})
|
||||||
slices.SortFunc(databaseEntries, func(a, b *bpmlib.BPMDatabaseEntry) int {
|
slices.SortFunc(databaseEntries, func(a, b *bpmlib.BPMDatabaseEntry) int {
|
||||||
return int(b.InstalledSize - a.InstalledSize)
|
return int(b.InstalledSize - a.InstalledSize)
|
||||||
})
|
})
|
||||||
|
case "installation-date":
|
||||||
|
slices.SortFunc(installedPackages, func(a, b installedPackage) int {
|
||||||
|
return int(b.localInfo.InstalledOn - a.localInfo.InstalledOn)
|
||||||
|
})
|
||||||
|
case "last-update-date":
|
||||||
|
slices.SortFunc(installedPackages, func(a, b installedPackage) int {
|
||||||
|
return int(b.localInfo.LastUpdatedOn - a.localInfo.LastUpdatedOn)
|
||||||
|
})
|
||||||
default:
|
default:
|
||||||
log.Printf("Error: cannot sort by '%s'", sortPackages)
|
log.Printf("Error: cannot sort by '%s'", sortPackages)
|
||||||
exitCode = 1
|
exitCode = 1
|
||||||
|
|||||||
Reference in New Issue
Block a user