From 1878258ac5dc651fe7e0ddb18935304e85bdc38c Mon Sep 17 00:00:00 2001 From: John Lago <750845+Lagoja@users.noreply.github.com> Date: Fri, 31 Jan 2025 12:25:26 -0800 Subject: [PATCH] fix typo --- internal/boxcli/list.go | 31 +++++++++++++++++++++++-- internal/boxcli/outdated.go | 45 ------------------------------------- internal/boxcli/root.go | 1 - internal/devbox/packages.go | 29 +++++++++--------------- 4 files changed, 39 insertions(+), 67 deletions(-) delete mode 100644 internal/boxcli/outdated.go diff --git a/internal/boxcli/list.go b/internal/boxcli/list.go index 48c33707b79..bac642d58e5 100644 --- a/internal/boxcli/list.go +++ b/internal/boxcli/list.go @@ -1,4 +1,4 @@ -// Copyright 2024 Jetify Inc. and contributors. All rights reserved. +// Copyright 2025 Jetify Inc. and contributors. All rights reserved. // Use of this source code is governed by the license in the LICENSE file. package boxcli @@ -15,7 +15,8 @@ import ( ) type listCmdFlags struct { - config configFlags + config configFlags + outdated bool } func listCmd() *cobra.Command { @@ -34,6 +35,10 @@ func listCmd() *cobra.Command { return errors.WithStack(err) } + if flags.outdated { + return printOutdatedPackages(cmd, box) + } + for _, pkg := range box.AllPackagesIncludingRemovedTriggerPackages() { resolvedVersion, err := pkg.ResolvedVersion() if err != nil { @@ -57,6 +62,28 @@ func listCmd() *cobra.Command { return nil }, } + + cmd.Flags().BoolVar(&flags.outdated, "outdated", false, "List outdated packages") flags.config.register(cmd) return cmd } + +// printOutdatedPackages prints a list of outdated packages. +func printOutdatedPackages(cmd *cobra.Command, box *devbox.Devbox) error { + results, err := box.Outdated(cmd.Context()) + if err != nil { + return errors.WithStack(err) + } + + if len(results) == 0 { + cmd.Println("Your packages are up to date!") + return nil + } + + cmd.Println("The following packages can be updated:") + for pkg, version := range results { + cmd.Printf(" * %-30s %s -> %s\n", pkg, version.Current, version.Latest) + } + + return nil +} diff --git a/internal/boxcli/outdated.go b/internal/boxcli/outdated.go deleted file mode 100644 index 9abff7a8c0c..00000000000 --- a/internal/boxcli/outdated.go +++ /dev/null @@ -1,45 +0,0 @@ -package boxcli - -import ( - "github.com/pkg/errors" - "github.com/spf13/cobra" - "go.jetpack.io/devbox/internal/devbox" - "go.jetpack.io/devbox/internal/devbox/devopt" -) - -func outdatedCmd() *cobra.Command { - flags := listCmdFlags{} - command := &cobra.Command{ - Use: "outdated", - Short: "Show all outdated packages", - Args: cobra.MaximumNArgs(0), - PreRunE: ensureNixInstalled, - RunE: func(cmd *cobra.Command, _ []string) error { - box, err := devbox.Open(&devopt.Opts{ - Dir: flags.config.path, - Stderr: cmd.ErrOrStderr(), - }) - if err != nil { - return errors.WithStack(err) - } - - resutls, err := box.Outdated(cmd.Context()) - if err != nil { - return errors.WithStack(err) - } - - if len(resutls) == 0 { - cmd.Println("Your packages are up to date!") - return nil - } - - cmd.Println("The following packages can be updated:") - for pkg, version := range resutls { - cmd.Printf(" * %-30s %s -> %s\n", pkg, version.Current, version.Latest) - } - return nil - }, - } - - return command -} diff --git a/internal/boxcli/root.go b/internal/boxcli/root.go index 415d8f28f0f..c502915aa52 100644 --- a/internal/boxcli/root.go +++ b/internal/boxcli/root.go @@ -66,7 +66,6 @@ func RootCmd() *cobra.Command { command.AddCommand(infoCmd()) command.AddCommand(initCmd()) command.AddCommand(installCmd()) - command.AddCommand(outdatedCmd()) command.AddCommand(integrateCmd()) command.AddCommand(listCmd()) command.AddCommand(logCmd()) diff --git a/internal/devbox/packages.go b/internal/devbox/packages.go index 45654371452..b368c9681ba 100644 --- a/internal/devbox/packages.go +++ b/internal/devbox/packages.go @@ -25,7 +25,6 @@ import ( "go.jetpack.io/devbox/internal/devpkg" "go.jetpack.io/devbox/internal/devpkg/pkgtype" "go.jetpack.io/devbox/internal/lock" - "go.jetpack.io/devbox/internal/searcher" "go.jetpack.io/devbox/internal/setup" "go.jetpack.io/devbox/internal/shellgen" "go.jetpack.io/devbox/internal/telemetry" @@ -54,33 +53,25 @@ func (d *Devbox) Outdated(ctx context.Context) (map[string]UpdateVersion, error) ctx, task := trace.NewTask(ctx, "devboxOutdated") defer task.End() + lockfile := d.Lockfile() outdatedPackages := map[string]UpdateVersion{} for _, pkg := range d.AllPackages() { - if strings.HasSuffix(pkg.Versioned(), "latest") { + // For non-devbox packages, like flakes or runx, we can skip for now + if !pkg.IsDevboxPackage { continue } - result, err := searcher.Client().Search(ctx, pkg.CanonicalName()) + lockPackage, err := lockfile.FetchResolvedPackage(pkg.Versioned()) if err != nil { - return nil, err + return nil, errors.Wrap(err, "failed to fetch resolved package") } - - for _, p := range result.Packages { - if p.Name == pkg.CanonicalName() { - for _, v := range p.Versions { - vv, err := pkg.ResolvedVersion() - if err != nil { - return nil, err - } - - if v.Version > vv { - outdatedPackages[p.Name] = UpdateVersion{Current: vv, Latest: v.Version} - break - } - } - } + existingLockPackage := lockfile.Packages[pkg.Raw] + if lockPackage.Version == existingLockPackage.Version { + continue } + + outdatedPackages[pkg.Versioned()] = UpdateVersion{Current: existingLockPackage.Version, Latest: lockPackage.Version} } return outdatedPackages, nil