Skip to content

Commit 5974862

Browse files
authored
[nix] Filter out 'devbox-development' messages (#518)
## Summary Filters out ```bash replacing old 'devbox-development' installing 'devbox-development' ``` from every command that runs `ensurePackagesAreInstalled` ## How was it tested? ```bash > devbox run echo hello Installing nix packages. This may take a while... Done. hello ```
1 parent 5beb8d1 commit 5974862

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

internal/impl/devbox.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"go.jetpack.io/devbox/internal/planner/plansdk"
3030
"go.jetpack.io/devbox/internal/plugin"
3131
"go.jetpack.io/devbox/internal/telemetry"
32+
"go.jetpack.io/devbox/internal/ux"
3233
"golang.org/x/exp/slices"
3334
)
3435

@@ -677,8 +678,12 @@ func (d *Devbox) installNixProfile() (err error) {
677678
}
678679

679680
cmd.Env = nix.DefaultEnv()
680-
cmd.Stdout = d.writer
681-
cmd.Stderr = d.writer
681+
cmd.Stdout = ux.NewFilterWriter(d.writer,
682+
`replacing old 'devbox-development'`,
683+
`installing 'devbox-development'`,
684+
)
685+
cmd.Stderr = cmd.Stdout
686+
682687
err = cmd.Run()
683688

684689
var exitErr *exec.ExitError

internal/ux/filterwriter.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package ux
2+
3+
import (
4+
"bytes"
5+
"io"
6+
7+
"github.com/samber/lo"
8+
)
9+
10+
type filterWriter struct {
11+
w io.Writer
12+
filtered [][]byte
13+
}
14+
15+
func (fw *filterWriter) Write(p []byte) (n int, err error) {
16+
for _, filter := range fw.filtered {
17+
if bytes.Contains(p, filter) {
18+
return len(p), nil
19+
}
20+
}
21+
return fw.w.Write(p)
22+
}
23+
24+
// NewFilterWriter returns a writer that filters out all writes that contain the
25+
// given string(s).
26+
func NewFilterWriter(w io.Writer, f ...string) io.Writer {
27+
return &filterWriter{
28+
w: w,
29+
filtered: lo.Map(f, func(s string, _ int) []byte { return []byte(s) }),
30+
}
31+
}

0 commit comments

Comments
 (0)