From 17af8dbaaf3d86c12f0caff14306212be12a217a Mon Sep 17 00:00:00 2001 From: EnumDev Date: Thu, 14 Aug 2025 17:09:18 +0300 Subject: [PATCH] Turn package script fatal errors into warnings --- src/bpmlib/errors.go | 11 +++++++++++ src/bpmlib/packages.go | 20 ++++++++++---------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/bpmlib/errors.go b/src/bpmlib/errors.go index 618251a..8b46b94 100644 --- a/src/bpmlib/errors.go +++ b/src/bpmlib/errors.go @@ -28,4 +28,15 @@ type PackageConflictErr struct { func (e PackageConflictErr) Error() string { return fmt.Sprintf("Package (%s) is in conflict with the following packages: %s", e.pkg, strings.Join(e.conflicts, ", ")) + +} + +type PackageScriptErr struct { + err error + packageName string + packageScript string +} + +func (e PackageScriptErr) Error() string { + return fmt.Sprintf("could not execute package script (%s) for package (%s): %s", e.packageScript, e.packageName, e.err) } diff --git a/src/bpmlib/packages.go b/src/bpmlib/packages.go index b304f8f..a908eef 100644 --- a/src/bpmlib/packages.go +++ b/src/bpmlib/packages.go @@ -368,39 +368,39 @@ func executePackageScripts(filename, rootDir string, operation packageOperation, if val, ok := scripts["pre_install.sh"]; !postOperation && ok { err := run("pre_install.sh", val) if err != nil { - return err + return PackageScriptErr{err: err, packageName: pkgInfo.PkgInfo.Name, packageScript: "pre_install.sh"} } } if val, ok := scripts["post_install.sh"]; postOperation && ok { err := run("post_install.sh", val) if err != nil { - return err + return PackageScriptErr{err: err, packageName: pkgInfo.PkgInfo.Name, packageScript: "post_install.sh"} } } } else if operation == packageOperationUpdate { if val, ok := scripts["pre_update.sh"]; !postOperation && ok { err := run("pre_update.sh", val) if err != nil { - return err + return PackageScriptErr{err: err, packageName: pkgInfo.PkgInfo.Name, packageScript: "pre_update.sh"} } } if val, ok := scripts["post_update.sh"]; postOperation && ok { err := run("post_update.sh", val) if err != nil { - return err + return PackageScriptErr{err: err, packageName: pkgInfo.PkgInfo.Name, packageScript: "post_update.sh"} } } } else if operation == packageOperationRemove { if val, ok := scripts["pre_remove.sh"]; !postOperation && ok { err := run("pre_remove.sh", val) if err != nil { - return err + return PackageScriptErr{err: err, packageName: pkgInfo.PkgInfo.Name, packageScript: "pre_remove.sh"} } } if val, ok := scripts["post_remove.sh"]; postOperation && ok { err := run("post_remove.sh", val) if err != nil { - return err + return PackageScriptErr{err: err, packageName: pkgInfo.PkgInfo.Name, packageScript: "post_remove.sh"} } } } @@ -547,12 +547,12 @@ func extractPackage(bpmpkg *BPMPackage, verbose bool, filename, rootDir string) if !IsPackageInstalled(bpmpkg.PkgInfo.Name, rootDir) { err := executePackageScripts(filename, rootDir, packageOperationInstall, false) if err != nil { - return err + log.Printf("Warning: %s\n", err) } } else { err := executePackageScripts(filename, rootDir, packageOperationUpdate, false) if err != nil { - return err + log.Printf("Warning: %s\n", err) } } seenHardlinks := make(map[string]string) @@ -905,12 +905,12 @@ func installPackage(filename, rootDir string, verbose, force bool) error { if !packageInstalled { err = executePackageScripts(filename, rootDir, packageOperationInstall, true) if err != nil { - return err + log.Printf("Warning: %s\n", err) } } else { err = executePackageScripts(filename, rootDir, packageOperationUpdate, true) if err != nil { - return err + log.Printf("Warning: %s\n", err) } }