@@ -21,10 +21,11 @@ import (
2121
2222type runCmdFlags struct {
2323 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
2829}
2930
3031// runFlagDefaults are the flag default values that differ
@@ -62,6 +63,7 @@ func runCmd(defaults runFlagDefaults) *cobra.Command {
6263 "shell environment will omit the env-vars from print-dev-env" ,
6364 )
6465 _ = command .Flags ().MarkHidden ("omit-nix-env" )
66+ command .Flags ().BoolVar (& flags .recomputeEnv , "recompute" , true , "recompute environment if needed" )
6567
6668 command .ValidArgs = listScripts (command , flags )
6769
@@ -84,6 +86,7 @@ func listScripts(cmd *cobra.Command, flags runCmdFlags) []string {
8486}
8587
8688func runScriptCmd (cmd * cobra.Command , args []string , flags runCmdFlags ) error {
89+ ctx := cmd .Context ()
8790 if len (args ) == 0 || flags .listScripts {
8891 scripts := listScripts (cmd , flags )
8992 if len (scripts ) == 0 {
@@ -111,9 +114,9 @@ func runScriptCmd(cmd *cobra.Command, args []string, flags runCmdFlags) error {
111114 // Check the directory exists.
112115 box , err := devbox .Open (& devopt.Opts {
113116 Dir : path ,
117+ Env : env ,
114118 Environment : flags .config .environment ,
115119 Stderr : cmd .ErrOrStderr (),
116- Env : env ,
117120 })
118121 if err != nil {
119122 return redact .Errorf ("error reading devbox.json: %w" , err )
@@ -122,8 +125,12 @@ func runScriptCmd(cmd *cobra.Command, args []string, flags runCmdFlags) error {
122125 envOpts := devopt.EnvOptions {
123126 OmitNixEnv : flags .omitNixEnv ,
124127 Pure : flags .pure ,
128+ RecomputeEnv : & devopt.RecomputeEnvOpts {
129+ Disabled : ! flags .recomputeEnv ,
130+ StateOutOfDateMessage : fmt .Sprintf (devbox .StateOutOfDateMessage , "with --recompute=true" ),
131+ },
125132 }
126- if err := box .RunScript (cmd . Context () , envOpts , script , scriptArgs ); err != nil {
133+ if err := box .RunScript (ctx , envOpts , script , scriptArgs ); err != nil {
127134 return redact .Errorf ("error running script %q in Devbox: %w" , script , err )
128135 }
129136 return nil
0 commit comments