Improve operation summary

This commit is contained in:
2025-10-06 16:38:03 +03:00
parent 5a78fd3002
commit 5909370407
+18 -15
View File
@@ -8,6 +8,7 @@ import (
"path" "path"
"slices" "slices"
"strings" "strings"
"text/tabwriter"
) )
type BPMOperation struct { type BPMOperation struct {
@@ -335,6 +336,9 @@ func (operation *BPMOperation) ShowOperationSummary() {
return return
} }
writer := tabwriter.NewWriter(os.Stdout, 6, 4, 6, ' ', 0)
fmt.Fprintln(writer, "Name\tVersion\tAction\tInstallation Reason\tFrom Source")
for _, value := range operation.Actions { for _, value := range operation.Actions {
var pkgInfo *PackageInfo var pkgInfo *PackageInfo
var installationReason = InstallationReasonUnknown var installationReason = InstallationReasonUnknown
@@ -349,41 +353,40 @@ func (operation *BPMOperation) ShowOperationSummary() {
pkgInfo = value.(*FetchPackageAction).DatabaseEntry.Info pkgInfo = value.(*FetchPackageAction).DatabaseEntry.Info
} else { } else {
pkgInfo = value.(*RemovePackageAction).BpmPackage.PkgInfo pkgInfo = value.(*RemovePackageAction).BpmPackage.PkgInfo
fmt.Printf("%s: %s (Remove)\n", pkgInfo.Name, pkgInfo.GetFullVersion()) fmt.Fprintf(writer, "%s\t%s\t%s\t%s\t%s\n", pkgInfo.Name, pkgInfo.GetFullVersion(), "Remove", "-", "-")
continue continue
} }
installedInfo := GetPackageInfo(pkgInfo.Name, operation.RootDir) installationReasonStr := ""
additionalInfo := ""
switch installationReason { switch installationReason {
case InstallationReasonManual: case InstallationReasonManual:
additionalInfo = "(Manual)" installationReasonStr = "Manual"
case InstallationReasonDependency: case InstallationReasonDependency:
additionalInfo = "(Dependency)" installationReasonStr = "Dependency"
case InstallationReasonMakeDependency: case InstallationReasonMakeDependency:
additionalInfo = "(Make dependency)" installationReasonStr = "Make dependency"
default: default:
additionalInfo = "(Unknown)" installationReasonStr = "Unknown"
}
if pkgInfo.Type == "source" {
additionalInfo += " (From Source)"
} }
installedInfo := GetPackageInfo(pkgInfo.Name, operation.RootDir)
if installedInfo == nil { if installedInfo == nil {
fmt.Printf("%s: %s (Install) %s\n", pkgInfo.Name, pkgInfo.GetFullVersion(), additionalInfo) fmt.Fprintf(writer, "%s\t%s\t%s\t%s\t%t\n", pkgInfo.Name, pkgInfo.GetFullVersion(), "Install", installationReasonStr, pkgInfo.Type == "source")
} else { } else {
comparison := ComparePackageVersions(*pkgInfo, *installedInfo) comparison := ComparePackageVersions(*pkgInfo, *installedInfo)
if comparison < 0 { if comparison < 0 {
fmt.Printf("%s: %s -> %s (Downgrade) %s\n", pkgInfo.Name, installedInfo.GetFullVersion(), pkgInfo.GetFullVersion(), additionalInfo) fmt.Fprintf(writer, "%s\t%s -> %s\t%s\t%s\t%t\n", pkgInfo.Name, installedInfo.GetFullVersion(), pkgInfo.GetFullVersion(), "Downgrade", installationReasonStr, pkgInfo.Type == "source")
} else if comparison > 0 { } else if comparison > 0 {
fmt.Printf("%s: %s -> %s (Upgrade) %s\n", pkgInfo.Name, installedInfo.GetFullVersion(), pkgInfo.GetFullVersion(), additionalInfo) fmt.Fprintf(writer, "%s\t%s -> %s\t%s\t%s\t%t\n", pkgInfo.Name, installedInfo.GetFullVersion(), pkgInfo.GetFullVersion(), "Upgrade", installationReasonStr, pkgInfo.Type == "source")
} else { } else {
fmt.Printf("%s: %s (Reinstall) %s\n", pkgInfo.Name, pkgInfo.GetFullVersion(), additionalInfo) fmt.Fprintf(writer, "%s\t%s\t%s\t%s\t%t\n", pkgInfo.Name, pkgInfo.GetFullVersion(), "Reinstall", installationReasonStr, pkgInfo.Type == "source")
} }
} }
} }
writer.Flush()
fmt.Println()
if operation.RootDir != "/" { if operation.RootDir != "/" {
fmt.Println("Warning: Operating in " + operation.RootDir) fmt.Println("Warning: Operating in " + operation.RootDir)
} }