@@ -11,10 +11,17 @@ import (
11
11
12
12
"go.jetpack.io/devbox/internal/devbox"
13
13
"go.jetpack.io/devbox/internal/devbox/devopt"
14
+ "go.jetpack.io/devbox/internal/devpkg"
15
+ "go.jetpack.io/devbox/internal/ux"
14
16
)
15
17
18
+ type installCmdFlags struct {
19
+ runCmdFlags
20
+ tidyLockfile bool
21
+ }
22
+
16
23
func installCmd () * cobra.Command {
17
- flags := runCmdFlags {}
24
+ flags := installCmdFlags {}
18
25
command := & cobra.Command {
19
26
Use : "install" ,
20
27
Short : "Install all packages mentioned in devbox.json" ,
@@ -26,11 +33,16 @@ func installCmd() *cobra.Command {
26
33
}
27
34
28
35
flags .config .register (command )
36
+ command .Flags ().BoolVar (
37
+ & flags .tidyLockfile , "tidy-lockfile" , false ,
38
+ "Fix missing store paths in the devbox.lock file." ,
39
+ // Could potentially do more in the future.
40
+ )
29
41
30
42
return command
31
43
}
32
44
33
- func installCmdFunc (cmd * cobra.Command , flags runCmdFlags ) error {
45
+ func installCmdFunc (cmd * cobra.Command , flags installCmdFlags ) error {
34
46
// Check the directory exists.
35
47
box , err := devbox .Open (& devopt.Opts {
36
48
Dir : flags .config .path ,
@@ -40,9 +52,18 @@ func installCmdFunc(cmd *cobra.Command, flags runCmdFlags) error {
40
52
if err != nil {
41
53
return errors .WithStack (err )
42
54
}
43
- if err = box .Install (cmd .Context ()); err != nil {
55
+ ctx := cmd .Context ()
56
+ if flags .tidyLockfile {
57
+ ctx = ux .HideMessage (ctx , devpkg .MissingStorePathsWarning )
58
+ }
59
+ if err = box .Install (ctx ); err != nil {
44
60
return errors .WithStack (err )
45
61
}
62
+ if flags .tidyLockfile {
63
+ if err = box .FixMissingStorePaths (ctx ); err != nil {
64
+ return errors .WithStack (err )
65
+ }
66
+ }
46
67
fmt .Fprintln (cmd .ErrOrStderr (), "Finished installing packages." )
47
68
return nil
48
69
}
0 commit comments