From b6083f95af31d3b95d0d581c15bcf4e916cb2317 Mon Sep 17 00:00:00 2001 From: Roberto Dip Date: Thu, 1 Aug 2024 17:19:11 -0300 Subject: [PATCH] if a PKG is added as a target, always install it previously we were only installing on updates fixes a bug found by @PezHub --- orbit/pkg/update/update.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/orbit/pkg/update/update.go b/orbit/pkg/update/update.go index f1803ec7873..56e4a79b7f4 100644 --- a/orbit/pkg/update/update.go +++ b/orbit/pkg/update/update.go @@ -385,9 +385,8 @@ func (u *Updater) get(target string) (*LocalTarget, error) { } } if strings.HasSuffix(localTarget.Path, ".pkg") && runtime.GOOS == "darwin" { - cmd := exec.Command("installer", "-pkg", localTarget.Path, "-target", "/") - if out, err := cmd.CombinedOutput(); err != nil { - return nil, fmt.Errorf("running pkgutil to install %s: %s: %w", localTarget.Path, string(out), err) + if err := installPKG(localTarget.Path); err != nil { + return nil, fmt.Errorf("updating pkg: %w", err) } } } else { @@ -398,6 +397,11 @@ func (u *Updater) get(target string) (*LocalTarget, error) { if err := u.download(target, repoPath, localTarget.Path, localTarget.Info.CustomCheckExec); err != nil { return nil, fmt.Errorf("download %q: %w", repoPath, err) } + if strings.HasSuffix(localTarget.Path, ".pkg") && runtime.GOOS == "darwin" { + if err := installPKG(localTarget.Path); err != nil { + return nil, fmt.Errorf("installing pkg for the first time: %w", err) + } + } default: return nil, fmt.Errorf("stat %q: %w", localTarget.Path, err) } @@ -647,6 +651,14 @@ func extractTarGz(path string) error { } } +func installPKG(path string) error { + cmd := exec.Command("installer", "-pkg", path, "-target", "/") + if out, err := cmd.CombinedOutput(); err != nil { + return fmt.Errorf("running pkgutil to install %s: %s: %w", path, string(out), err) + } + return nil +} + func (u *Updater) initializeDirectories() error { for _, dir := range []string{ filepath.Join(u.opt.RootDirectory, binDir),