Skip to content

Commit e3283a4

Browse files
authored
[update] UX fixes to update path (#1129)
## Summary Fixes/refactors: * If legacy package is global, show correct update message * If a legacy package is updated, don't try to update it again (which will show warning because it is not versioned) * Made `ShowWarnings` -> `IgnoreWarnings` because we ignore in the vast majority of cases. Fixed a few cases that were accidentally ignored. ## How was it tested? * Modified global config to have "curl" pacakge. * Saw `devbox global update` and ran it. * Inspected config. Repeated process for non-global as well.
1 parent 3764425 commit e3283a4

File tree

7 files changed

+35
-41
lines changed

7 files changed

+35
-41
lines changed

devbox.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,7 @@ type Devbox interface {
5858

5959
// Open opens a devbox by reading the config file in dir.
6060
func Open(opts *devopt.Opts) (Devbox, error) {
61-
return impl.Open(&devopt.Opts{
62-
Dir: opts.Dir,
63-
Pure: opts.Pure,
64-
ShowWarnings: opts.ShowWarnings,
65-
Writer: opts.Writer,
66-
})
61+
return impl.Open(opts)
6762
}
6863

6964
// InitConfig creates a default devbox config file if one doesn't already exist.

internal/boxcli/midcobra/telemetry.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,9 @@ func getPackagesAndCommitHash(c *cobra.Command) ([]string, string) {
224224
}
225225

226226
box, err := devbox.Open(&devopt.Opts{
227-
Dir: path,
228-
Writer: os.Stdout,
229-
ShowWarnings: false,
227+
Dir: path,
228+
Writer: os.Stdout,
229+
IgnoreWarnings: true,
230230
})
231231
if err != nil {
232232
return []string{}, ""

internal/boxcli/run.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ func runCmd() *cobra.Command {
4949

5050
func listScripts(cmd *cobra.Command, flags runCmdFlags) []string {
5151
box, err := devbox.Open(&devopt.Opts{
52-
Dir: flags.config.path,
53-
Writer: cmd.ErrOrStderr(),
54-
Pure: flags.pure,
55-
ShowWarnings: false,
52+
Dir: flags.config.path,
53+
Writer: cmd.ErrOrStderr(),
54+
Pure: flags.pure,
55+
IgnoreWarnings: true,
5656
})
5757
if err != nil {
5858
debug.Log("failed to open devbox: %v", err)

internal/impl/devbox.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,19 @@ func Open(opts *devopt.Opts) (*Devbox, error) {
104104
)
105105
box.lockfile = lock
106106

107-
if opts.ShowWarnings &&
107+
if !opts.IgnoreWarnings &&
108108
!legacyPackagesWarningHasBeenShown &&
109109
box.HasDeprecatedPackages() {
110110
legacyPackagesWarningHasBeenShown = true
111+
globalPath, err := GlobalDataPath()
112+
if err != nil {
113+
return nil, err
114+
}
111115
ux.Fwarning(
112116
os.Stderr, // Always stderr. box.writer should probably always be err.
113117
"Your devbox.json contains packages in legacy format. "+
114-
"Please run `devbox update` to update your devbox.json.\n",
118+
"Please run `devbox %supdate` to update your devbox.json.\n",
119+
lo.Ternary(box.projectDir == globalPath, "global ", ""),
115120
)
116121
}
117122

internal/impl/devbox_test.go

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,9 @@ func testShellPlan(t *testing.T, testPath string) {
4343
assert := assert.New(t)
4444

4545
_, err := Open(&devopt.Opts{
46-
Dir: baseDir,
47-
Writer: os.Stdout,
48-
ShowWarnings: true,
49-
Pure: false,
46+
Dir: baseDir,
47+
Writer: os.Stdout,
48+
Pure: false,
5049
})
5150
assert.NoErrorf(err, "%s should be a valid devbox project", baseDir)
5251
})
@@ -72,10 +71,9 @@ func TestComputeNixEnv(t *testing.T) {
7271
_, err := devconfig.Init(path, os.Stdout)
7372
require.NoError(t, err, "InitConfig should not fail")
7473
d, err := Open(&devopt.Opts{
75-
Dir: path,
76-
Writer: os.Stdout,
77-
ShowWarnings: true,
78-
Pure: false,
74+
Dir: path,
75+
Writer: os.Stdout,
76+
Pure: false,
7977
})
8078
require.NoError(t, err, "Open should not fail")
8179
d.nix = &testNix{}
@@ -90,10 +88,9 @@ func TestComputeNixPathIsIdempotent(t *testing.T) {
9088
_, err := devconfig.Init(dir, os.Stdout)
9189
require.NoError(t, err, "InitConfig should not fail")
9290
devbox, err := Open(&devopt.Opts{
93-
Dir: dir,
94-
Writer: os.Stdout,
95-
ShowWarnings: true,
96-
Pure: false,
91+
Dir: dir,
92+
Writer: os.Stdout,
93+
Pure: false,
9794
})
9895
require.NoError(t, err, "Open should not fail")
9996
devbox.nix = &testNix{"/tmp/my/path"}
@@ -121,10 +118,9 @@ func TestComputeNixPathWhenRemoving(t *testing.T) {
121118
_, err := devconfig.Init(dir, os.Stdout)
122119
require.NoError(t, err, "InitConfig should not fail")
123120
devbox, err := Open(&devopt.Opts{
124-
Dir: dir,
125-
Writer: os.Stdout,
126-
ShowWarnings: true,
127-
Pure: false,
121+
Dir: dir,
122+
Writer: os.Stdout,
123+
Pure: false,
128124
})
129125
require.NoError(t, err, "Open should not fail")
130126
devbox.nix = &testNix{"/tmp/my/path"}

internal/impl/devopt/devboxopts.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package devopt
33
import "io"
44

55
type Opts struct {
6-
Dir string
7-
Pure bool
8-
ShowWarnings bool
9-
Writer io.Writer
6+
Dir string
7+
Pure bool
8+
IgnoreWarnings bool
9+
Writer io.Writer
1010
}

internal/impl/update.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"context"
88
"fmt"
99

10-
"go.jetpack.io/devbox/internal/lock"
1110
"go.jetpack.io/devbox/internal/nix"
1211
"go.jetpack.io/devbox/internal/searcher"
1312
"go.jetpack.io/devbox/internal/ux"
@@ -20,6 +19,7 @@ func (d *Devbox) Update(ctx context.Context, pkgs ...string) error {
2019
return err
2120
}
2221

22+
pendingPackagesToUpdate := []*nix.Input{}
2323
for _, pkg := range inputs {
2424
if pkg.IsLegacy() {
2525
fmt.Fprintf(d.writer, "Updating %s -> %s\n", pkg.Raw, pkg.LegacyToVersioned())
@@ -34,14 +34,12 @@ func (d *Devbox) Update(ctx context.Context, pkgs ...string) error {
3434
if err := d.Add(ctx, pkg.LegacyToVersioned()); err != nil {
3535
return err
3636
}
37+
} else {
38+
pendingPackagesToUpdate = append(pendingPackagesToUpdate, pkg)
3739
}
3840
}
3941

40-
for _, pkg := range inputs {
41-
if !lock.IsVersionedPackage(pkg.Raw) {
42-
fmt.Fprintf(d.writer, "Skipping %s because it is not a versioned package\n", pkg)
43-
continue
44-
}
42+
for _, pkg := range pendingPackagesToUpdate {
4543
existing := d.lockfile.Packages[pkg.Raw]
4644
newEntry, err := searcher.Client().Resolve(pkg.Raw)
4745
if err != nil {

0 commit comments

Comments
 (0)