Skip to content

Commit 12f2daf

Browse files
authored
nix: improve redacted nix error (#1776)
1 parent f050ab8 commit 12f2daf

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

internal/nix/nix.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/pkg/errors"
1919
"go.jetpack.io/devbox/internal/boxcli/featureflag"
2020
"go.jetpack.io/devbox/internal/boxcli/usererr"
21+
"go.jetpack.io/devbox/internal/redact"
2122

2223
"go.jetpack.io/devbox/internal/debug"
2324
)
@@ -76,15 +77,22 @@ func (*Nix) PrintDevEnv(ctx context.Context, args *PrintDevEnvArgs) (*PrintDevEn
7677
if insecure, insecureErr := IsExitErrorInsecurePackage(err, "" /*installable*/); insecure {
7778
return nil, insecureErr
7879
} else if err != nil {
79-
return nil, errors.Wrapf(err, "Command: %s", cmd)
80+
safeArgs := make([]string, 0, len(cmd.Args))
81+
for _, a := range cmd.Args {
82+
if a == args.FlakeDir {
83+
a = "<redacted path>"
84+
}
85+
safeArgs = append(safeArgs, a)
86+
}
87+
return nil, redact.Errorf("nix command: %s", redact.Safe(safeArgs))
8088
}
8189

8290
if err := json.Unmarshal(data, &out); err != nil {
83-
return nil, errors.WithStack(err)
91+
return nil, redact.Errorf("unmarshal nix print-dev-env output: %w", redact.Safe(err))
8492
}
8593

8694
if err = savePrintDevEnvCache(args.PrintDevEnvCachePath, out); err != nil {
87-
return nil, errors.WithStack(err)
95+
return nil, redact.Errorf("savePrintDevEnvCache: %w", redact.Safe(err))
8896
}
8997
}
9098

@@ -175,12 +183,13 @@ func Version() (string, error) {
175183
cmd := command("--version")
176184
outBytes, err := cmd.Output()
177185
if err != nil {
178-
return "", errors.WithStack(err)
186+
return "", redact.Errorf("nix command: %s", redact.Safe(cmd))
179187
}
180188
out := string(outBytes)
181189
const prefix = "nix (Nix) "
182190
if !strings.HasPrefix(out, prefix) {
183-
return "", errors.Errorf(`Expected "%s" prefix, but output from nix --version was: %s`, prefix, out)
191+
return "", redact.Errorf(`nix command %s: expected %q prefix, but output was: %s`,
192+
redact.Safe(cmd), redact.Safe(prefix), redact.Safe(out))
184193
}
185194
version = strings.TrimSpace(strings.TrimPrefix(out, prefix))
186195
return version, nil

0 commit comments

Comments
 (0)