Skip to content

Commit 13f558b

Browse files
authored
[envsec] Add environment flag (#1679)
## Summary Adds new `--environment` flag that gets passed in to envsec. A few notes: * This flag is present in any command that allows a custom config path. The idea is that in the future users can add per environment configuration to their `devbox.json` * This PR validates in devbox.Open instead of CLI. This can probably be moved up to CLI code but this would have bloated this PR. * Related, the way we pass options to devbox.Open is very brittle. It involves a lot of copy paste that is easy to mess up. We should look to refactor that, maybe in a follow up. ## How was it tested? ``` devbox run --environment prod echo $SECRET ```
1 parent 76e1488 commit 13f558b

File tree

18 files changed

+98
-50
lines changed

18 files changed

+98
-50
lines changed

internal/boxcli/add.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,9 @@ func addCmd() *cobra.Command {
7373

7474
func addCmdFunc(cmd *cobra.Command, args []string, flags addCmdFlags) error {
7575
box, err := devbox.Open(&devopt.Opts{
76-
Dir: flags.config.path,
77-
Stderr: cmd.ErrOrStderr(),
76+
Dir: flags.config.path,
77+
Environment: flags.config.environment,
78+
Stderr: cmd.ErrOrStderr(),
7879
})
7980
if err != nil {
8081
return errors.WithStack(err)

internal/boxcli/cloud.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,9 @@ func runCloudShellCmd(cmd *cobra.Command, flags *cloudShellCmdFlags) error {
141141
}
142142

143143
box, err := devbox.Open(&devopt.Opts{
144-
Dir: flags.config.path,
145-
Stderr: cmd.ErrOrStderr(),
144+
Dir: flags.config.path,
145+
Environment: flags.config.environment,
146+
Stderr: cmd.ErrOrStderr(),
146147
})
147148
if err != nil {
148149
return errors.WithStack(err)
@@ -157,8 +158,9 @@ func runCloudInit(cmd *cobra.Command, flags *cloudShellCmdFlags) error {
157158
}
158159

159160
box, err := devbox.Open(&devopt.Opts{
160-
Dir: flags.config.path,
161-
Stderr: cmd.ErrOrStderr(),
161+
Dir: flags.config.path,
162+
Environment: flags.config.environment,
163+
Stderr: cmd.ErrOrStderr(),
162164
})
163165
if err != nil {
164166
return errors.WithStack(err)

internal/boxcli/config.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,28 @@ import (
99

1010
// to be composed into xyzCmdFlags structs
1111
type configFlags struct {
12-
path string
12+
path string
13+
environment string
1314
}
1415

1516
func (flags *configFlags) register(cmd *cobra.Command) {
1617
cmd.Flags().StringVarP(
1718
&flags.path, "config", "c", "", "path to directory containing a devbox.json config file",
1819
)
20+
cmd.Flags().StringVar(
21+
&flags.environment, "environment", "dev", "environment to use, when supported (e.g. envsec supports dev, prod, preview.)",
22+
)
1923
}
2024

2125
func (flags *configFlags) registerPersistent(cmd *cobra.Command) {
2226
cmd.PersistentFlags().StringVarP(
2327
&flags.path, "config", "c", "", "path to directory containing a devbox.json config file",
2428
)
29+
cmd.PersistentFlags().StringVar(
30+
&flags.environment, "environment", "dev", "environment to use, when supported (e.g. envsec supports dev, prod, preview.)",
31+
)
32+
}
33+
34+
func (flags *configFlags) Environment() string {
35+
return flags.environment
2536
}

internal/boxcli/generate.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,9 @@ func sshConfigCmd() *cobra.Command {
138138
func runGenerateCmd(cmd *cobra.Command, flags *generateCmdFlags) error {
139139
// Check the directory exists.
140140
box, err := devbox.Open(&devopt.Opts{
141-
Dir: flags.config.path,
142-
Stderr: cmd.ErrOrStderr(),
141+
Dir: flags.config.path,
142+
Environment: flags.config.environment,
143+
Stderr: cmd.ErrOrStderr(),
143144
})
144145
if err != nil {
145146
return errors.WithStack(err)
@@ -166,8 +167,9 @@ func runGenerateDirenvCmd(cmd *cobra.Command, flags *generateCmdFlags) error {
166167
}
167168

168169
box, err := devbox.Open(&devopt.Opts{
169-
Dir: flags.config.path,
170-
Stderr: cmd.ErrOrStderr(),
170+
Dir: flags.config.path,
171+
Environment: flags.config.environment,
172+
Stderr: cmd.ErrOrStderr(),
171173
})
172174
if err != nil {
173175
return errors.WithStack(err)

internal/boxcli/info.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ func infoCmd() *cobra.Command {
3737

3838
func infoCmdFunc(cmd *cobra.Command, pkg string, flags infoCmdFlags) error {
3939
box, err := devbox.Open(&devopt.Opts{
40-
Dir: flags.config.path,
41-
Stderr: cmd.ErrOrStderr(),
40+
Dir: flags.config.path,
41+
Environment: flags.config.environment,
42+
Stderr: cmd.ErrOrStderr(),
4243
})
4344
if err != nil {
4445
return errors.WithStack(err)

internal/boxcli/install.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,9 @@ func installCmd() *cobra.Command {
3333
func installCmdFunc(cmd *cobra.Command, flags runCmdFlags) error {
3434
// Check the directory exists.
3535
box, err := devbox.Open(&devopt.Opts{
36-
Dir: flags.config.path,
37-
Stderr: cmd.ErrOrStderr(),
36+
Dir: flags.config.path,
37+
Environment: flags.config.environment,
38+
Stderr: cmd.ErrOrStderr(),
3839
})
3940
if err != nil {
4041
return errors.WithStack(err)

internal/boxcli/pull.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ func pullCmd() *cobra.Command {
5050

5151
func pullCmdFunc(cmd *cobra.Command, url string, flags *pullCmdFlags) error {
5252
box, err := devbox.Open(&devopt.Opts{
53-
Dir: flags.config.path,
54-
Stderr: cmd.ErrOrStderr(),
53+
Dir: flags.config.path,
54+
Environment: flags.config.environment,
55+
Stderr: cmd.ErrOrStderr(),
5556
})
5657
if err != nil {
5758
return errors.WithStack(err)

internal/boxcli/push.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ func pushCmd() *cobra.Command {
3636

3737
func pushCmdFunc(cmd *cobra.Command, url string, flags pushCmdFlags) error {
3838
box, err := devbox.Open(&devopt.Opts{
39-
Dir: flags.config.path,
40-
Stderr: cmd.ErrOrStderr(),
39+
Dir: flags.config.path,
40+
Environment: flags.config.environment,
41+
Stderr: cmd.ErrOrStderr(),
4142
})
4243
if err != nil {
4344
return errors.WithStack(err)

internal/boxcli/rm.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ func removeCmd() *cobra.Command {
3232

3333
func runRemoveCmd(cmd *cobra.Command, args []string, flags removeCmdFlags) error {
3434
box, err := devbox.Open(&devopt.Opts{
35-
Dir: flags.config.path,
36-
Stderr: cmd.ErrOrStderr(),
35+
Dir: flags.config.path,
36+
Environment: flags.config.environment,
37+
Stderr: cmd.ErrOrStderr(),
3738
})
3839
if err != nil {
3940
return errors.WithStack(err)

internal/boxcli/run.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ func runCmd() *cobra.Command {
5959
func listScripts(cmd *cobra.Command, flags runCmdFlags) []string {
6060
box, err := devbox.Open(&devopt.Opts{
6161
Dir: flags.config.path,
62+
Environment: flags.config.environment,
6263
Stderr: cmd.ErrOrStderr(),
6364
Pure: flags.pure,
6465
IgnoreWarnings: true,
@@ -99,10 +100,11 @@ func runScriptCmd(cmd *cobra.Command, args []string, flags runCmdFlags) error {
99100

100101
// Check the directory exists.
101102
box, err := devbox.Open(&devopt.Opts{
102-
Dir: path,
103-
Stderr: cmd.ErrOrStderr(),
104-
Pure: flags.pure,
105-
Env: env,
103+
Dir: path,
104+
Environment: flags.config.environment,
105+
Stderr: cmd.ErrOrStderr(),
106+
Pure: flags.pure,
107+
Env: env,
106108
})
107109
if err != nil {
108110
return redact.Errorf("error reading devbox.json: %w", err)

0 commit comments

Comments
 (0)