Skip to content

Commit 9e6eed0

Browse files
authored
[global] Add update/services/run commands to global (#1046)
## Summary This adds: ```bash devbox global update devbox global services [subcommand] devbox global run ``` commands to global. I fixed a few issues: * Some commands were missing `--config` flag * We were using `IsDevboxShellEnabled` instead of `IsEnvEnabled`. The first (obsolete?) command only looks if we're in a devbox shell while the second returns true if we are in an environment created for the specific config. I found bug that I didn't fix in this PR which is that if a package with plugins/services is installed the environment must be refreshed. If done with while `IsEnvEnabled` is false this is not an issue. This can be fixed by sourcing the environment prior to running the service with special care not to override user set variables. cc: @Lagoja ## How was it tested? ```bash devbox global add apache eval "$(devbox global shellenv)" # due to env bug devbox global services up ```
1 parent 8fa9bc1 commit 9e6eed0

File tree

5 files changed

+33
-19
lines changed

5 files changed

+33
-19
lines changed

internal/boxcli/config.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,9 @@ func (flags *configFlags) register(cmd *cobra.Command) {
1717
&flags.path, "config", "c", "", "path to directory containing a devbox.json config file",
1818
)
1919
}
20+
21+
func (flags *configFlags) registerPersistent(cmd *cobra.Command) {
22+
cmd.PersistentFlags().StringVarP(
23+
&flags.path, "config", "c", "", "path to directory containing a devbox.json config file",
24+
)
25+
}

internal/boxcli/global.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,12 @@ func globalCmd() *cobra.Command {
3030
}
3131

3232
addCommandAndHideConfigFlag(globalCmd, addCmd())
33-
addCommandAndHideConfigFlag(globalCmd, removeCmd())
3433
addCommandAndHideConfigFlag(globalCmd, installCmd())
34+
addCommandAndHideConfigFlag(globalCmd, removeCmd())
35+
addCommandAndHideConfigFlag(globalCmd, runCmd())
36+
addCommandAndHideConfigFlag(globalCmd, servicesCmd())
3537
addCommandAndHideConfigFlag(globalCmd, shellEnvCmd())
38+
addCommandAndHideConfigFlag(globalCmd, updateCmd())
3639

3740
// Create list for non-global? Mike: I want it :)
3841
globalCmd.AddCommand(globalListCmd())

internal/boxcli/services.go

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,15 @@ type servicesCmdFlags struct {
1414
}
1515

1616
type serviceUpFlags struct {
17-
configFlags
1817
background bool
1918
processComposeFile string
2019
}
2120

2221
type serviceStopFlags struct {
23-
configFlags
2422
allProjects bool
2523
}
2624

2725
func (flags *serviceUpFlags) register(cmd *cobra.Command) {
28-
flags.configFlags.register(cmd)
2926
cmd.Flags().StringVar(
3027
&flags.processComposeFile,
3128
"process-compose-file",
@@ -38,7 +35,6 @@ func (flags *serviceUpFlags) register(cmd *cobra.Command) {
3835
}
3936

4037
func (flags *serviceStopFlags) register(cmd *cobra.Command) {
41-
flags.configFlags.register(cmd)
4238
cmd.Flags().BoolVar(
4339
&flags.allProjects, "all-projects", false, "Stop all running services across all your projects.\nThis flag cannot be used simultaneously with the [services] argument")
4440
}
@@ -74,7 +70,7 @@ func servicesCmd() *cobra.Command {
7470
Short: "Stop one or more services in the current project. If no service is specified, stops all services in the current project.",
7571
Long: `Stop one or more services in the current project. If no service is specified, stops all services in the current project. \nIf the --all-projects flag is specified, stops all running services across all your projects. This flag cannot be used with [service] arguments.`,
7672
RunE: func(cmd *cobra.Command, args []string) error {
77-
return stopServices(cmd, args, serviceStopFlags)
73+
return stopServices(cmd, args, flags, serviceStopFlags)
7874
},
7975
}
8076

@@ -90,11 +86,11 @@ func servicesCmd() *cobra.Command {
9086
Use: "up [service]...",
9187
Short: "Starts process manager with specified services. If no services are listed, starts the process manager with all the services in your project",
9288
RunE: func(cmd *cobra.Command, args []string) error {
93-
return startProcessManager(cmd, args, serviceUpFlags)
89+
return startProcessManager(cmd, args, flags, serviceUpFlags)
9490
},
9591
}
9692

97-
flags.config.register(servicesCommand)
93+
flags.config.registerPersistent(servicesCommand)
9894
serviceUpFlags.register(upCommand)
9995
serviceStopFlags.register(stopCommand)
10096
servicesCommand.AddCommand(lsCommand)
@@ -112,7 +108,6 @@ func listServices(cmd *cobra.Command, flags servicesCmdFlags) error {
112108
}
113109

114110
return box.ListServices(cmd.Context())
115-
116111
}
117112

118113
func startServices(cmd *cobra.Command, services []string, flags servicesCmdFlags) error {
@@ -124,8 +119,13 @@ func startServices(cmd *cobra.Command, services []string, flags servicesCmdFlags
124119
return box.StartServices(cmd.Context(), services...)
125120
}
126121

127-
func stopServices(cmd *cobra.Command, services []string, flags serviceStopFlags) error {
128-
box, err := devbox.Open(flags.configFlags.path, cmd.ErrOrStderr())
122+
func stopServices(
123+
cmd *cobra.Command,
124+
services []string,
125+
servicesFlags servicesCmdFlags,
126+
flags serviceStopFlags,
127+
) error {
128+
box, err := devbox.Open(servicesFlags.config.path, cmd.ErrOrStderr())
129129
if err != nil {
130130
return errors.WithStack(err)
131131
}
@@ -148,8 +148,13 @@ func restartServices(
148148
return box.RestartServices(cmd.Context(), services...)
149149
}
150150

151-
func startProcessManager(cmd *cobra.Command, args []string, flags serviceUpFlags) error {
152-
box, err := devbox.Open(flags.path, cmd.ErrOrStderr())
151+
func startProcessManager(
152+
cmd *cobra.Command,
153+
args []string,
154+
servicesFlags servicesCmdFlags,
155+
flags serviceUpFlags,
156+
) error {
157+
box, err := devbox.Open(servicesFlags.config.path, cmd.ErrOrStderr())
153158
if err != nil {
154159
return errors.WithStack(err)
155160
}

internal/devconfig/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func DefaultConfig() *Config {
6969
},
7070
InitHook: &shellcmd.Commands{
7171
Cmds: []string{
72-
"echo 'Welcome to devbox!'",
72+
"echo 'Welcome to devbox!' > /dev/null",
7373
},
7474
},
7575
},

internal/impl/devbox.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ func (d *Devbox) Services() (services.Services, error) {
457457
}
458458

459459
func (d *Devbox) StartServices(ctx context.Context, serviceNames ...string) error {
460-
if !envir.IsDevboxShellEnabled() {
460+
if !d.IsEnvEnabled() {
461461
return d.RunScript("devbox", append([]string{"services", "start"}, serviceNames...))
462462
}
463463

@@ -494,7 +494,7 @@ func (d *Devbox) StartServices(ctx context.Context, serviceNames ...string) erro
494494
}
495495

496496
func (d *Devbox) StopServices(ctx context.Context, allProjects bool, serviceNames ...string) error {
497-
if !envir.IsDevboxShellEnabled() {
497+
if !d.IsEnvEnabled() {
498498
args := []string{"services", "stop"}
499499
args = append(args, serviceNames...)
500500
if allProjects {
@@ -533,7 +533,7 @@ func (d *Devbox) StopServices(ctx context.Context, allProjects bool, serviceName
533533
}
534534

535535
func (d *Devbox) ListServices(ctx context.Context) error {
536-
if !envir.IsDevboxShellEnabled() {
536+
if !d.IsEnvEnabled() {
537537
return d.RunScript("devbox", []string{"services", "ls"})
538538
}
539539

@@ -571,7 +571,7 @@ func (d *Devbox) ListServices(ctx context.Context) error {
571571
}
572572

573573
func (d *Devbox) RestartServices(ctx context.Context, serviceNames ...string) error {
574-
if !envir.IsDevboxShellEnabled() {
574+
if !d.IsEnvEnabled() {
575575
return d.RunScript("devbox", append([]string{"services", "restart"}, serviceNames...))
576576
}
577577

@@ -637,7 +637,7 @@ func (d *Devbox) StartProcessManager(
637637
return err
638638
}
639639
}
640-
if !envir.IsDevboxShellEnabled() {
640+
if !d.IsEnvEnabled() {
641641
args := []string{"services", "up"}
642642
args = append(args, requestedServices...)
643643
if processComposeFileOrDir != "" {

0 commit comments

Comments
 (0)