Skip to content

Commit 7d7741b

Browse files
authored
[ux] Improve refresh messaging (#2173)
## Summary A few improvements: * Use same refresh command. Previously we were using two different ways of refreshing the environment. * Display `refresh-global` even if alias is not set (since it will likely be set by the end of the command). * Don't show the refresh message will calling refresh. ## How was it tested? * Tested refresh-global on zsh. * TODO: test refresh-global on fish. * Calling refresh-global does not show refresh message.
1 parent 328d0b8 commit 7d7741b

File tree

4 files changed

+18
-12
lines changed

4 files changed

+18
-12
lines changed

internal/boxcli/shellenv.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/spf13/cobra"
1212
"go.jetpack.io/devbox/internal/devbox"
1313
"go.jetpack.io/devbox/internal/devbox/devopt"
14+
"go.jetpack.io/devbox/internal/ux"
1415
)
1516

1617
type shellEnvCmdFlags struct {
@@ -94,6 +95,10 @@ func shellEnvFunc(
9495
if err != nil {
9596
return "", err
9697
}
98+
ctx := cmd.Context()
99+
if flags.recomputeEnv {
100+
ctx = ux.HideMessage(ctx, devbox.StateOutOfDateMessage)
101+
}
97102
box, err := devbox.Open(&devopt.Opts{
98103
Dir: flags.config.path,
99104
Environment: flags.config.environment,
@@ -105,12 +110,12 @@ func shellEnvFunc(
105110
}
106111

107112
if flags.install {
108-
if err := box.Install(cmd.Context()); err != nil {
113+
if err := box.Install(ctx); err != nil {
109114
return "", err
110115
}
111116
}
112117

113-
envStr, err := box.EnvExports(cmd.Context(), devopt.EnvExportsOpts{
118+
envStr, err := box.EnvExports(ctx, devopt.EnvExportsOpts{
114119
DontRecomputeEnvironment: !flags.recomputeEnv,
115120
EnvOptions: devopt.EnvOptions{
116121
OmitNixEnv: flags.omitNixEnv,

internal/devbox/devbox.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -323,14 +323,11 @@ func (d *Devbox) EnvExports(ctx context.Context, opts devopt.EnvExportsOpts) (st
323323
if opts.DontRecomputeEnvironment {
324324
upToDate, _ := d.lockfile.IsUpToDateAndInstalled(isFishShell())
325325
if !upToDate {
326-
cmd := `eval "$(devbox global shellenv --recompute)"`
327-
if isFishShell() {
328-
cmd = `devbox global shellenv --recompute | source`
329-
}
330-
ux.Finfo(
326+
ux.FHidableWarning(
327+
ctx,
331328
d.stderr,
332-
"Your devbox environment may be out of date. Please run \n\n%s\n\n",
333-
cmd,
329+
StateOutOfDateMessage,
330+
d.refreshAliasOrCommand(),
334331
)
335332
}
336333

internal/devbox/packages.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ import (
3737
"go.jetpack.io/devbox/internal/ux"
3838
)
3939

40+
const StateOutOfDateMessage = "Your devbox environment may be out of date. Run %s to update it.\n"
41+
4042
// packages.go has functions for adding, removing and getting info about nix
4143
// packages
4244

@@ -285,9 +287,10 @@ func (d *Devbox) ensureStateIsUpToDate(ctx context.Context, mode installMode) er
285287
// be out of date after the user installs something. If have direnv active
286288
// it should reload automatically so we don't need to refresh.
287289
if d.IsEnvEnabled() && !upToDate && !d.IsDirenvActive() {
288-
ux.Fwarning(
290+
ux.FHidableWarning(
291+
ctx,
289292
d.stderr,
290-
"Your shell environment may be out of date. Run `%s` to update it.\n",
293+
StateOutOfDateMessage,
291294
d.refreshAliasOrCommand(),
292295
)
293296
}

internal/devbox/refresh.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ func (d *Devbox) isGlobal() bool {
2828
// great, we just print out the entire command.
2929
func (d *Devbox) refreshAliasOrCommand() string {
3030
if !d.isRefreshAliasSet() {
31-
return d.refreshCmd()
31+
// even if alias is not set, it might still be set by the end of this process
32+
return fmt.Sprintf("`%s` or `%s`", d.refreshAliasName(), d.refreshCmd())
3233
}
3334
return d.refreshAliasName()
3435
}

0 commit comments

Comments
 (0)