1
- // Copyright 2024 Jetify Inc. and contributors. All rights reserved.
1
+ // Copyright 2025 Jetify Inc. and contributors. All rights reserved.
2
2
// Use of this source code is governed by the license in the LICENSE file.
3
3
4
4
package boxcli
@@ -15,7 +15,8 @@ import (
15
15
)
16
16
17
17
type listCmdFlags struct {
18
- config configFlags
18
+ config configFlags
19
+ outdated bool
19
20
}
20
21
21
22
func listCmd () * cobra.Command {
@@ -34,6 +35,10 @@ func listCmd() *cobra.Command {
34
35
return errors .WithStack (err )
35
36
}
36
37
38
+ if flags .outdated {
39
+ return outdatedPackage (cmd , box )
40
+ }
41
+
37
42
for _ , pkg := range box .AllPackagesIncludingRemovedTriggerPackages () {
38
43
resolvedVersion , err := pkg .ResolvedVersion ()
39
44
if err != nil {
@@ -57,6 +62,28 @@ func listCmd() *cobra.Command {
57
62
return nil
58
63
},
59
64
}
65
+
66
+ cmd .Flags ().BoolVar (& flags .outdated , "outdated" , false , "List outdated packages" )
60
67
flags .config .register (cmd )
61
68
return cmd
62
69
}
70
+
71
+ // outdatedPackage prints a list of outdated packages.
72
+ func outdatedPackage (cmd * cobra.Command , box * devbox.Devbox ) error {
73
+ results , err := box .Outdated (cmd .Context ())
74
+ if err != nil {
75
+ return errors .WithStack (err )
76
+ }
77
+
78
+ if len (results ) == 0 {
79
+ cmd .Println ("Your packages are up to date!" )
80
+ return nil
81
+ }
82
+
83
+ cmd .Println ("The following packages can be updated:" )
84
+ for pkg , version := range results {
85
+ cmd .Printf (" * %-30s %s -> %s\n " , pkg , version .Current , version .Latest )
86
+ }
87
+
88
+ return nil
89
+ }
0 commit comments