@@ -21,10 +21,11 @@ import (
21
21
22
22
type runCmdFlags struct {
23
23
envFlag
24
- config configFlags
25
- omitNixEnv bool
26
- pure bool
27
- listScripts bool
24
+ config configFlags
25
+ omitNixEnv bool
26
+ pure bool
27
+ listScripts bool
28
+ recomputeEnv bool
28
29
}
29
30
30
31
// runFlagDefaults are the flag default values that differ
@@ -62,6 +63,7 @@ func runCmd(defaults runFlagDefaults) *cobra.Command {
62
63
"shell environment will omit the env-vars from print-dev-env" ,
63
64
)
64
65
_ = command .Flags ().MarkHidden ("omit-nix-env" )
66
+ command .Flags ().BoolVar (& flags .recomputeEnv , "recompute" , true , "recompute environment if needed" )
65
67
66
68
command .ValidArgs = listScripts (command , flags )
67
69
@@ -84,6 +86,7 @@ func listScripts(cmd *cobra.Command, flags runCmdFlags) []string {
84
86
}
85
87
86
88
func runScriptCmd (cmd * cobra.Command , args []string , flags runCmdFlags ) error {
89
+ ctx := cmd .Context ()
87
90
if len (args ) == 0 || flags .listScripts {
88
91
scripts := listScripts (cmd , flags )
89
92
if len (scripts ) == 0 {
@@ -111,9 +114,9 @@ func runScriptCmd(cmd *cobra.Command, args []string, flags runCmdFlags) error {
111
114
// Check the directory exists.
112
115
box , err := devbox .Open (& devopt.Opts {
113
116
Dir : path ,
117
+ Env : env ,
114
118
Environment : flags .config .environment ,
115
119
Stderr : cmd .ErrOrStderr (),
116
- Env : env ,
117
120
})
118
121
if err != nil {
119
122
return redact .Errorf ("error reading devbox.json: %w" , err )
@@ -122,8 +125,12 @@ func runScriptCmd(cmd *cobra.Command, args []string, flags runCmdFlags) error {
122
125
envOpts := devopt.EnvOptions {
123
126
OmitNixEnv : flags .omitNixEnv ,
124
127
Pure : flags .pure ,
128
+ RecomputeEnv : & devopt.RecomputeEnvOpts {
129
+ Disabled : ! flags .recomputeEnv ,
130
+ StateOutOfDateMessage : fmt .Sprintf (devbox .StateOutOfDateMessage , "with --recompute=true" ),
131
+ },
125
132
}
126
- if err := box .RunScript (cmd . Context () , envOpts , script , scriptArgs ); err != nil {
133
+ if err := box .RunScript (ctx , envOpts , script , scriptArgs ); err != nil {
127
134
return redact .Errorf ("error running script %q in Devbox: %w" , script , err )
128
135
}
129
136
return nil
0 commit comments