Skip to content

Commit 8b2b47b

Browse files
committed
flagDefaults as struct param; call flag --omit-nix-env and use in shellenv/shell/run commands
1 parent 6a7d917 commit 8b2b47b

File tree

7 files changed

+60
-53
lines changed

7 files changed

+60
-53
lines changed

internal/boxcli/global.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,20 @@ func globalCmd() *cobra.Command {
2828
PersistentPostRunE: ensureGlobalEnvEnabled,
2929
}
3030

31-
shellEnv := shellEnvCmd(
32-
withEnvForPackageBins(true),
33-
withRecompute(false),
34-
)
35-
3631
addCommandAndHideConfigFlag(globalCmd, addCmd())
3732
addCommandAndHideConfigFlag(globalCmd, installCmd())
3833
addCommandAndHideConfigFlag(globalCmd, pathCmd())
3934
addCommandAndHideConfigFlag(globalCmd, pullCmd())
4035
addCommandAndHideConfigFlag(globalCmd, pushCmd())
4136
addCommandAndHideConfigFlag(globalCmd, removeCmd())
42-
addCommandAndHideConfigFlag(globalCmd, runCmd())
37+
addCommandAndHideConfigFlag(globalCmd, runCmd(runFlagDefaults{
38+
omitNixEnv: true,
39+
}))
4340
addCommandAndHideConfigFlag(globalCmd, servicesCmd(persistentPreRunE))
44-
addCommandAndHideConfigFlag(globalCmd, shellEnv)
41+
addCommandAndHideConfigFlag(globalCmd, shellEnvCmd(shellenvFlagDefaults{
42+
omitNixEnv: true,
43+
recomputeEnv: false,
44+
}))
4545
addCommandAndHideConfigFlag(globalCmd, updateCmd())
4646
addCommandAndHideConfigFlag(globalCmd, listCmd())
4747

internal/boxcli/root.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,14 @@ func RootCmd() *cobra.Command {
7171
command.AddCommand(listCmd())
7272
command.AddCommand(logCmd())
7373
command.AddCommand(removeCmd())
74-
command.AddCommand(runCmd())
74+
command.AddCommand(runCmd(runFlagDefaults{}))
7575
command.AddCommand(searchCmd())
7676
command.AddCommand(servicesCmd())
7777
command.AddCommand(setupCmd())
78-
command.AddCommand(shellCmd())
79-
command.AddCommand(shellEnvCmd())
78+
command.AddCommand(shellCmd(shellFlagDefaults{}))
79+
command.AddCommand(shellEnvCmd(shellenvFlagDefaults{
80+
recomputeEnv: true,
81+
}))
8082
command.AddCommand(updateCmd())
8183
command.AddCommand(versionCmd())
8284
// Preview commands

internal/boxcli/run.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,18 @@ import (
2222
type runCmdFlags struct {
2323
envFlag
2424
config configFlags
25+
omitNixEnv bool
2526
pure bool
2627
listScripts bool
2728
}
2829

29-
func runCmd() *cobra.Command {
30+
// runFlagDefaults are the flag default values that differ
31+
// from the `devbox` command versus `devbox global` command.
32+
type runFlagDefaults struct {
33+
omitNixEnv bool
34+
}
35+
36+
func runCmd(defaults runFlagDefaults) *cobra.Command {
3037
flags := runCmdFlags{}
3138
command := &cobra.Command{
3239
Use: "run [<script> | <cmd>]",
@@ -50,6 +57,11 @@ func runCmd() *cobra.Command {
5057
&flags.pure, "pure", false, "if this flag is specified, devbox runs the script in an isolated environment inheriting almost no variables from the current environment. A few variables, in particular HOME, USER and DISPLAY, are retained.")
5158
command.Flags().BoolVarP(
5259
&flags.listScripts, "list", "l", false, "list all scripts defined in devbox.json")
60+
command.Flags().BoolVar(
61+
&flags.omitNixEnv, "omit-nix-env", defaults.omitNixEnv,
62+
"shell environment will omit the env-vars from print-dev-env",
63+
)
64+
_ = command.Flags().MarkHidden("omit-nix-env")
5365

5466
command.ValidArgs = listScripts(command, flags)
5567

@@ -102,6 +114,7 @@ func runScriptCmd(cmd *cobra.Command, args []string, flags runCmdFlags) error {
102114
Dir: path,
103115
Environment: flags.config.environment,
104116
Stderr: cmd.ErrOrStderr(),
117+
OmitNixEnv: flags.omitNixEnv,
105118
Pure: flags.pure,
106119
Env: env,
107120
})

internal/boxcli/shell.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,19 @@ import (
1717

1818
type shellCmdFlags struct {
1919
envFlag
20-
config configFlags
21-
printEnv bool
22-
pure bool
20+
config configFlags
21+
omitNixEnv bool
22+
printEnv bool
23+
pure bool
2324
}
2425

25-
func shellCmd() *cobra.Command {
26+
// shellFlagDefaults are the flag default values that differ
27+
// from the `devbox` command versus `devbox global` command.
28+
type shellFlagDefaults struct {
29+
omitNixEnv bool
30+
}
31+
32+
func shellCmd(defaults shellFlagDefaults) *cobra.Command {
2633
flags := shellCmdFlags{}
2734
command := &cobra.Command{
2835
Use: "shell",
@@ -41,6 +48,11 @@ func shellCmd() *cobra.Command {
4148
&flags.printEnv, "print-env", false, "print script to setup shell environment")
4249
command.Flags().BoolVar(
4350
&flags.pure, "pure", false, "if this flag is specified, devbox creates an isolated shell inheriting almost no variables from the current environment. A few variables, in particular HOME, USER and DISPLAY, are retained.")
51+
command.Flags().BoolVar(
52+
&flags.omitNixEnv, "omit-nix-env", defaults.omitNixEnv,
53+
"shell environment will omit the env-vars from print-dev-env",
54+
)
55+
_ = command.Flags().MarkHidden("omit-nix-env")
4456

4557
flags.config.register(command)
4658
flags.envFlag.register(command)
@@ -57,6 +69,7 @@ func runShellCmd(cmd *cobra.Command, flags shellCmdFlags) error {
5769
Dir: flags.config.path,
5870
Env: env,
5971
Environment: flags.config.environment,
72+
OmitNixEnv: flags.omitNixEnv,
6073
Pure: flags.pure,
6174
Stderr: cmd.ErrOrStderr(),
6275
})

internal/boxcli/shellenv.go

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ import (
1515

1616
type shellEnvCmdFlags struct {
1717
envFlag
18-
config configFlags
19-
// TODO: is this flag needed in other commands?
20-
envForPackageBins bool
18+
config configFlags
19+
omitNixEnv bool
2120
install bool
2221
noRefreshAlias bool
2322
preservePathStack bool
@@ -26,32 +25,14 @@ type shellEnvCmdFlags struct {
2625
runInitHook bool
2726
}
2827

28+
// shellenvFlagDefaults are the flag default values that differ
29+
// from the `devbox` command versus `devbox global` command.
2930
type shellenvFlagDefaults struct {
30-
envForPackageBins bool
31-
recomputeEnv bool
31+
omitNixEnv bool
32+
recomputeEnv bool
3233
}
3334

34-
type shellenvFlagDefault func(*shellenvFlagDefaults)
35-
36-
func withEnvForPackageBins(envForPackageBins bool) shellenvFlagDefault {
37-
return func(o *shellenvFlagDefaults) {
38-
o.envForPackageBins = envForPackageBins
39-
}
40-
}
41-
42-
func withRecompute(recompute bool) shellenvFlagDefault {
43-
return func(o *shellenvFlagDefaults) {
44-
o.recomputeEnv = recompute
45-
}
46-
}
47-
48-
func shellEnvCmd(opts ...shellenvFlagDefault) *cobra.Command {
49-
defaults := shellenvFlagDefaults{
50-
recomputeEnv: true,
51-
}
52-
for _, opt := range opts {
53-
opt(&defaults)
54-
}
35+
func shellEnvCmd(defaults shellenvFlagDefaults) *cobra.Command {
5536

5637
flags := shellEnvCmdFlags{}
5738
command := &cobra.Command{
@@ -90,9 +71,10 @@ func shellEnvCmd(opts ...shellenvFlagDefault) *cobra.Command {
9071
"Use this flag to disable this behavior.")
9172
_ = command.Flags().MarkHidden("no-refresh-alias")
9273
command.Flags().BoolVar(
93-
&flags.envForPackageBins, "env-for-package-binaries", defaults.envForPackageBins,
94-
"include package bin directories in the PATH")
95-
_ = command.Flags().MarkHidden("env-for-package-binaries")
74+
&flags.omitNixEnv, "omit-nix-env", defaults.omitNixEnv,
75+
"shell environment will omit the env-vars from print-dev-env",
76+
)
77+
_ = command.Flags().MarkHidden("omit-nix-env")
9678

9779
command.Flags().BoolVarP(
9880
&flags.recomputeEnv, "recompute", "r", defaults.recomputeEnv,
@@ -116,7 +98,7 @@ func shellEnvFunc(
11698
box, err := devbox.Open(&devopt.Opts{
11799
Dir: flags.config.path,
118100
Environment: flags.config.environment,
119-
EnvForPackageBins: flags.envForPackageBins,
101+
OmitNixEnv: flags.omitNixEnv,
120102
Stderr: cmd.ErrOrStderr(),
121103
PreservePathStack: flags.preservePathStack,
122104
Pure: flags.pure,

internal/devbox/devbox.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func Open(opts *devopt.Opts) (*Devbox, error) {
9898
box := &Devbox{
9999
cfg: cfg,
100100
env: opts.Env,
101-
envForPackageBins: opts.EnvForPackageBins,
101+
envForPackageBins: opts.OmitNixEnv,
102102
environment: environment,
103103
nix: &nix.Nix{},
104104
projectDir: projectDir,

internal/devbox/devopt/devboxopts.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,10 @@ import (
99
// - omit suffix Opts for other structs that are composed into an Opts struct
1010

1111
type Opts struct {
12-
Dir string
13-
Env map[string]string
14-
Environment string
15-
// EnvForPackageBins will create the Devbox environment from print-dev-env
16-
// such that it is optimized for executing binaries, and not for developing
17-
// software using dependencies installed in the Devbox environment.
18-
EnvForPackageBins bool
12+
Dir string
13+
Env map[string]string
14+
Environment string
15+
OmitNixEnv bool
1916
PreservePathStack bool
2017
Pure bool
2118
IgnoreWarnings bool

0 commit comments

Comments
 (0)