diff --git a/internal/boxcli/list.go b/internal/boxcli/list.go index 48c33707b79..0fee307815f 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 outdatedPackage(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 } + +// outdatedPackage prints a list of outdated packages. +func outdatedPackage(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())