From 57231fdec5bcaf9042ddac7eee8b019b1149381c Mon Sep 17 00:00:00 2001 From: EnumDev Date: Mon, 11 Aug 2025 12:23:45 +0300 Subject: [PATCH] Fix package installation reason not being displayed or set correctly --- src/bpm/main.go | 5 +++-- src/bpmlib/general.go | 33 ++++++++++++++++++++++++++++++++- src/bpmlib/operations.go | 24 ++++++++++++------------ 3 files changed, 47 insertions(+), 15 deletions(-) diff --git a/src/bpm/main.go b/src/bpm/main.go index 0ad19e9..ffb0698 100644 --- a/src/bpm/main.go +++ b/src/bpm/main.go @@ -5,7 +5,6 @@ import ( "errors" "flag" "fmt" - "git.enumerated.dev/bubble-package-manager/bpm/src/bpmlib" "log" "os" "os/exec" @@ -13,6 +12,8 @@ import ( "path/filepath" "slices" "strings" + + "git.enumerated.dev/bubble-package-manager/bpm/src/bpmlib" ) /* -------------BPM | Bubble Package Manager-------------- */ @@ -250,7 +251,7 @@ func resolveCommand() { } // Check if installationReason argument is valid - ir := bpmlib.InstallationReasonManual + ir := bpmlib.InstallationReasonUnknown switch installationReason { case "manual": ir = bpmlib.InstallationReasonManual diff --git a/src/bpmlib/general.go b/src/bpmlib/general.go index fe4d6e5..b3ba3ad 100644 --- a/src/bpmlib/general.go +++ b/src/bpmlib/general.go @@ -19,7 +19,8 @@ const ( ) // InstallPackages installs the specified packages into the given root directory by fetching them from databases or directly from local bpm archives -func InstallPackages(rootDir string, installationReason InstallationReason, reinstallMethod ReinstallMethod, installOptionalDependencies, forceInstallation, verbose bool, packages ...string) (operation *BPMOperation, err error) { +func InstallPackages(rootDir string, forceInstallationReason InstallationReason, reinstallMethod ReinstallMethod, installOptionalDependencies, forceInstallation, verbose bool, packages ...string) (operation *BPMOperation, err error) { + // Setup operation struct operation = &BPMOperation{ Actions: make([]OperationAction, 0), @@ -44,6 +45,16 @@ func InstallPackages(rootDir string, installationReason InstallationReason, rein continue } + // Set package installation reason + installationReason := forceInstallationReason + if installationReason == InstallationReasonUnknown { + if IsPackageInstalled(splitPkg.Name, rootDir) { + installationReason = GetInstallationReason(splitPkg.Name, rootDir) + } else { + installationReason = InstallationReasonManual + } + } + operation.AppendAction(&InstallPackageAction{ File: pkg, InstallationReason: installationReason, @@ -58,6 +69,16 @@ func InstallPackages(rootDir string, installationReason InstallationReason, rein continue } + // Set package installation reason + installationReason := forceInstallationReason + if installationReason == InstallationReasonUnknown { + if IsPackageInstalled(bpmpkg.PkgInfo.Name, rootDir) { + installationReason = GetInstallationReason(bpmpkg.PkgInfo.Name, rootDir) + } else { + installationReason = InstallationReasonManual + } + } + operation.AppendAction(&InstallPackageAction{ File: pkg, InstallationReason: installationReason, @@ -84,6 +105,16 @@ func InstallPackages(rootDir string, installationReason InstallationReason, rein continue } + // Set package installation reason + installationReason := forceInstallationReason + if installationReason == InstallationReasonUnknown { + if IsPackageInstalled(entry.Info.Name, rootDir) { + installationReason = GetInstallationReason(entry.Info.Name, rootDir) + } else { + installationReason = InstallationReasonManual + } + } + operation.AppendAction(&FetchPackageAction{ InstallationReason: installationReason, DatabaseEntry: entry, diff --git a/src/bpmlib/operations.go b/src/bpmlib/operations.go index 786a233..2e0b4a7 100644 --- a/src/bpmlib/operations.go +++ b/src/bpmlib/operations.go @@ -287,7 +287,7 @@ func (operation *BPMOperation) CheckForConflicts() (map[string][]string, error) for i, value := range installedPackages { bpmpkg := GetPackage(value, operation.RootDir) if bpmpkg == nil { - return nil, errors.New(fmt.Sprintf("could not find installed package (%s)", value)) + return nil, fmt.Errorf("could not find installed package (%s)", value) } allPackages[i] = bpmpkg.PkgInfo } @@ -452,13 +452,13 @@ func (operation *BPMOperation) Execute(verbose, force bool) (err error) { // Fetch package from database fetchedPackage, err := entry.Database.FetchPackage(entry.Info.Name) if err != nil { - return errors.New(fmt.Sprintf("could not fetch package (%s): %s\n", entry.Info.Name, err)) + return fmt.Errorf("could not fetch package (%s): %s\n", entry.Info.Name, err) } // Read fetched package bpmpkg, err = ReadPackage(fetchedPackage) if err != nil { - return errors.New(fmt.Sprintf("could not fetch package (%s): %s\n", entry.Info.Name, err)) + return fmt.Errorf("could not fetch package (%s): %s\n", entry.Info.Name, err) } // Add fetched package to map @@ -469,7 +469,7 @@ func (operation *BPMOperation) Execute(verbose, force bool) (err error) { // Read fetched package bpmpkg, err = ReadPackage(fetchedPackages[entry.Download]) if err != nil { - return errors.New(fmt.Sprintf("could not read package (%s): %s\n", entry.Info.Name, err)) + return fmt.Errorf("could not read package (%s): %s\n", entry.Info.Name, err) } fmt.Printf("Package (%s) was successfully fetched!\n", entry.Info.Name) @@ -517,13 +517,12 @@ func (operation *BPMOperation) Execute(verbose, force bool) (err error) { pkgInfo := action.(*RemovePackageAction).BpmPackage.PkgInfo err := removePackage(pkgInfo.Name, verbose, operation.RootDir) if err != nil { - return errors.New(fmt.Sprintf("could not remove package (%s): %s\n", pkgInfo.Name, err)) + return fmt.Errorf("could not remove package (%s): %s\n", pkgInfo.Name, err) } } else if action.GetActionType() == "install" { value := action.(*InstallPackageAction) fileToInstall := value.File bpmpkg := value.BpmPackage - isReinstall := IsPackageInstalled(bpmpkg.PkgInfo.Name, operation.RootDir) var err error // Compile package if type is 'source' @@ -572,14 +571,15 @@ func (operation *BPMOperation) Execute(verbose, force bool) (err error) { err = installPackage(fileToInstall, operation.RootDir, verbose, force) } if err != nil { - return errors.New(fmt.Sprintf("could not install package (%s): %s\n", bpmpkg.PkgInfo.Name, err)) + return fmt.Errorf("could not install package (%s): %s\n", bpmpkg.PkgInfo.Name, err) } - if !isReinstall { - err := SetInstallationReason(bpmpkg.PkgInfo.Name, value.InstallationReason, operation.RootDir) - if err != nil { - return errors.New(fmt.Sprintf("could not set installation reason for package (%s): %s\n", value.BpmPackage.PkgInfo.Name, err)) - } + + // Set installed package's installation reason + err = SetInstallationReason(bpmpkg.PkgInfo.Name, value.InstallationReason, operation.RootDir) + if err != nil { + return fmt.Errorf("could not set installation reason for package (%s): %s\n", value.BpmPackage.PkgInfo.Name, err) } + fmt.Printf("Package (%s) was successfully installed\n", bpmpkg.PkgInfo.Name) } }