Add sorting by installation date and last update date in 'list' subcommand

This commit is contained in:
2026-02-24 20:51:04 +02:00
parent 95dee0560a
commit 3f23580d16
+19 -16
View File
@@ -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