From bce66c4c16a247e727ff7dcc5befa56518077e23 Mon Sep 17 00:00:00 2001 From: Mike Landau Date: Tue, 25 Jun 2024 17:39:44 -0700 Subject: [PATCH 1/2] [ux] Improve refresh messaging --- internal/boxcli/shellenv.go | 9 +++++++-- internal/devbox/devbox.go | 11 ++++------- internal/devbox/packages.go | 7 +++++-- internal/devbox/refresh.go | 3 ++- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/internal/boxcli/shellenv.go b/internal/boxcli/shellenv.go index 228dbb46ebe..a37472b7167 100644 --- a/internal/boxcli/shellenv.go +++ b/internal/boxcli/shellenv.go @@ -11,6 +11,7 @@ import ( "github.com/spf13/cobra" "go.jetpack.io/devbox/internal/devbox" "go.jetpack.io/devbox/internal/devbox/devopt" + "go.jetpack.io/devbox/internal/ux" ) type shellEnvCmdFlags struct { @@ -94,6 +95,10 @@ func shellEnvFunc( if err != nil { return "", err } + ctx := cmd.Context() + if flags.recomputeEnv { + ctx = ux.HideMessage(ctx, devbox.StateOutOfDateMessage) + } box, err := devbox.Open(&devopt.Opts{ Dir: flags.config.path, Environment: flags.config.environment, @@ -105,12 +110,12 @@ func shellEnvFunc( } if flags.install { - if err := box.Install(cmd.Context()); err != nil { + if err := box.Install(ctx); err != nil { return "", err } } - envStr, err := box.EnvExports(cmd.Context(), devopt.EnvExportsOpts{ + envStr, err := box.EnvExports(ctx, devopt.EnvExportsOpts{ DontRecomputeEnvironment: !flags.recomputeEnv, EnvOptions: devopt.EnvOptions{ OmitNixEnv: flags.omitNixEnv, diff --git a/internal/devbox/devbox.go b/internal/devbox/devbox.go index d15dd0f5ba3..5a27c3c79b5 100644 --- a/internal/devbox/devbox.go +++ b/internal/devbox/devbox.go @@ -323,14 +323,11 @@ func (d *Devbox) EnvExports(ctx context.Context, opts devopt.EnvExportsOpts) (st if opts.DontRecomputeEnvironment { upToDate, _ := d.lockfile.IsUpToDateAndInstalled(isFishShell()) if !upToDate { - cmd := `eval "$(devbox global shellenv --recompute)"` - if isFishShell() { - cmd = `devbox global shellenv --recompute | source` - } - ux.Finfo( + ux.FHidableWarning( + ctx, d.stderr, - "Your devbox environment may be out of date. Please run \n\n%s\n\n", - cmd, + StateOutOfDateMessage, + d.refreshAliasOrCommand(), ) } diff --git a/internal/devbox/packages.go b/internal/devbox/packages.go index c5dbb7e6e53..67dfe3b02de 100644 --- a/internal/devbox/packages.go +++ b/internal/devbox/packages.go @@ -37,6 +37,8 @@ import ( "go.jetpack.io/devbox/internal/ux" ) +var StateOutOfDateMessage = "Your devbox environment may be out of date. Run %s to update it.\n" + // packages.go has functions for adding, removing and getting info about nix // packages @@ -285,9 +287,10 @@ func (d *Devbox) ensureStateIsUpToDate(ctx context.Context, mode installMode) er // be out of date after the user installs something. If have direnv active // it should reload automatically so we don't need to refresh. if d.IsEnvEnabled() && !upToDate && !d.IsDirenvActive() { - ux.Fwarning( + ux.FHidableWarning( + ctx, d.stderr, - "Your shell environment may be out of date. Run `%s` to update it.\n", + StateOutOfDateMessage, d.refreshAliasOrCommand(), ) } diff --git a/internal/devbox/refresh.go b/internal/devbox/refresh.go index 2b6d895ca60..dd44aeabc9a 100644 --- a/internal/devbox/refresh.go +++ b/internal/devbox/refresh.go @@ -28,7 +28,8 @@ func (d *Devbox) isGlobal() bool { // great, we just print out the entire command. func (d *Devbox) refreshAliasOrCommand() string { if !d.isRefreshAliasSet() { - return d.refreshCmd() + // even if alias is not set, it might still be set by the end of this process + return fmt.Sprintf("`%s` or `%s`", d.refreshAliasName(), d.refreshCmd()) } return d.refreshAliasName() } From fd33c2a476cf3a63c009f1e4837aff7dec13e553 Mon Sep 17 00:00:00 2001 From: Mike Landau Date: Thu, 27 Jun 2024 20:39:31 -0700 Subject: [PATCH 2/2] const --- internal/devbox/packages.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/devbox/packages.go b/internal/devbox/packages.go index 67dfe3b02de..0097f71a291 100644 --- a/internal/devbox/packages.go +++ b/internal/devbox/packages.go @@ -37,7 +37,7 @@ import ( "go.jetpack.io/devbox/internal/ux" ) -var StateOutOfDateMessage = "Your devbox environment may be out of date. Run %s to update it.\n" +const StateOutOfDateMessage = "Your devbox environment may be out of date. Run %s to update it.\n" // packages.go has functions for adding, removing and getting info about nix // packages