Skip to content

Commit 6961f0d

Browse files
committed
env: use ripgrep for the grep tool
Signed-off-by: Tibor Vass <[email protected]>
1 parent 7385827 commit 6961f0d

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

cmd/container-use/stdio.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ var stdioCmd = &cobra.Command{
3939

4040
func warmCache(ctx context.Context, dag *dagger.Client) {
4141
environment.EditUtil(dag).Sync(ctx)
42+
environment.GrepUtil(dag).Sync(ctx)
4243
}
4344

4445
func init() {

environment/filesystem.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ import (
1010
"github.com/dagger/container-use/edit"
1111
)
1212

13-
// FIXME: See hack where it's used
14-
const fileUtilsBaseImage = "busybox"
15-
1613
func (env *Environment) FileRead(ctx context.Context, targetFile string, shouldReadEntireFile bool, startLineOneIndexedInclusive int, endLineOneIndexedInclusive int) (string, error) {
1714
file, err := env.container().File(targetFile).Contents(ctx)
1815
if err != nil {
@@ -85,10 +82,10 @@ func (env *Environment) ls(ctx context.Context, path string, filter dagger.Direc
8582

8683
func (env *Environment) FileGrep(ctx context.Context, path, pattern, include string) (string, error) {
8784
// Hack: use busybox to run `sed` since dagger doesn't have native file editing primitives.
88-
args := []string{"/bin/grep", "-E", "--", pattern, include}
85+
args := []string{"/usr/bin/rg", "--no-unicode", "-g", include, "--", pattern, path}
8986

90-
dir := env.container().Rootfs().Directory(path)
91-
out, err := dag.Container().From(fileUtilsBaseImage).WithMountedDirectory("/mnt", dir).WithWorkdir("/mnt").WithExec(args).Stdout(ctx)
87+
dir := env.container().Directory(path)
88+
out, err := GrepUtil(env.dag).WithMountedDirectory("/workdir", dir).WithWorkdir("/workdir").WithExec(args, dagger.ContainerWithExecOpts{Expect: dagger.ReturnTypeAny}).Stdout(ctx)
9289
if err != nil {
9390
return "", err
9491
}
@@ -107,8 +104,13 @@ func EditUtil(dag *dagger.Client) *dagger.Container {
107104
WithNewFile("/go/src/go.mod", edit.GoMod).
108105
WithNewFile("/go/src/go.sum", edit.GoSum).
109106
WithEnvVariable("CGO_ENABLED", "0").
107+
WithWorkdir("/go/src").
110108
WithExec([]string{"go", "build", "-o", "/edit", "-ldflags", "-w -s", "/go/src/edit.go"}).File("/edit")
111-
return dag.Container().From("scratch").WithFile("/edit", editBin).WithEntrypoint([]string{"/edit"})
109+
return dag.Container().From(alpineImage).WithFile("/edit", editBin).WithEntrypoint([]string{"/edit"})
110+
}
111+
112+
func GrepUtil(dag *dagger.Client) *dagger.Container {
113+
return dag.Container().From(alpineImage).WithExec([]string{"apk", "add", "-U", "ripgrep"})
112114
}
113115

114116
func (env *Environment) FileEdit(ctx context.Context, targetFile string, edits []FileEdit) error {

0 commit comments

Comments
 (0)