diff --git a/devbox.json b/devbox.json index f2d37932412..af14a34f0ee 100644 --- a/devbox.json +++ b/devbox.json @@ -1,7 +1,8 @@ { "packages": [ "go@latest", - "runx:golangci/golangci-lint@latest" + "runx:golangci/golangci-lint@latest", + "runx:mvdan/gofumpt@latest" ], "env": { "GOENV": "off", diff --git a/devbox.lock b/devbox.lock index c5a83a096b5..d9c579ee055 100644 --- a/devbox.lock +++ b/devbox.lock @@ -24,6 +24,10 @@ "runx:golangci/golangci-lint@latest": { "resolved": "golangci/golangci-lint@v1.54.2", "version": "v1.54.2" + }, + "runx:mvdan/gofumpt@latest": { + "resolved": "mvdan/gofumpt@v0.5.0", + "version": "v0.5.0" } } } diff --git a/go.mod b/go.mod index c7b5d662cf1..6100236a0d7 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/wk8/go-ordered-map/v2 v2.1.8 github.com/zealic/go2node v0.1.0 - go.jetpack.io/pkg v0.0.0-20231006204718-f59feb213022 + go.jetpack.io/pkg v0.0.0-20231010185527-78c6902d51f7 golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 golang.org/x/mod v0.12.0 golang.org/x/sync v0.3.0 diff --git a/go.sum b/go.sum index e1013a12907..1de56714730 100644 --- a/go.sum +++ b/go.sum @@ -339,6 +339,8 @@ go.jetpack.io/pkg v0.0.0-20231002215645-9afeb0623fd3 h1:aMydtVCHn7dfotOyV41VAxX5 go.jetpack.io/pkg v0.0.0-20231002215645-9afeb0623fd3/go.mod h1:iaf3e/aENp5luwYFlfCxj+GsiwqHagbvRAY3bIdEgGA= go.jetpack.io/pkg v0.0.0-20231006204718-f59feb213022 h1:8TRpo0lYh1Y6zec8Px0yXbnVRXXs+yUPU+TnHNsREdA= go.jetpack.io/pkg v0.0.0-20231006204718-f59feb213022/go.mod h1:iaf3e/aENp5luwYFlfCxj+GsiwqHagbvRAY3bIdEgGA= +go.jetpack.io/pkg v0.0.0-20231010185527-78c6902d51f7 h1:QGNfUfKmGtjPgYNgmXwsUa9+AN7rdcRx3N6Mfy5BXS0= +go.jetpack.io/pkg v0.0.0-20231010185527-78c6902d51f7/go.mod h1:iaf3e/aENp5luwYFlfCxj+GsiwqHagbvRAY3bIdEgGA= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= diff --git a/internal/impl/devbox.go b/internal/impl/devbox.go index 988a3496c29..ec7392280a2 100644 --- a/internal/impl/devbox.go +++ b/internal/impl/devbox.go @@ -1210,18 +1210,40 @@ func (d *Devbox) Lockfile() *lock.File { } func (d *Devbox) RunXPaths(ctx context.Context) (string, error) { - packages := lo.Filter(d.InstallablePackages(), devpkg.IsRunX) - paths := []string{} - for _, pkg := range packages { + runxBinPath := filepath.Join(d.projectDir, ".devbox", "virtenv", "runx", "bin") + if err := os.RemoveAll(runxBinPath); err != nil { + return "", err + } + if err := os.MkdirAll(runxBinPath, 0o755); err != nil { + return "", err + } + + for _, pkg := range d.InstallablePackages() { + if !pkg.IsRunX() { + continue + } lockedPkg, err := d.lockfile.Resolve(pkg.Raw) if err != nil { return "", err } - p, err := pkgtype.RunXClient().Install(ctx, lockedPkg.Resolved) + paths, err := pkgtype.RunXClient().Install(ctx, lockedPkg.Resolved) if err != nil { return "", err } - paths = append(paths, p...) + for _, path := range paths { + // create symlink to all files in p + files, err := os.ReadDir(path) + if err != nil { + return "", err + } + for _, file := range files { + src := filepath.Join(path, file.Name()) + dst := filepath.Join(runxBinPath, file.Name()) + if err := os.Symlink(src, dst); err != nil && !errors.Is(err, os.ErrExist) { + return "", err + } + } + } } - return envpath.JoinPathLists(paths...), nil + return runxBinPath, nil } diff --git a/scripts/gofumpt.sh b/scripts/gofumpt.sh index 69e44a0a1cc..dba1c8e8737 100755 --- a/scripts/gofumpt.sh +++ b/scripts/gofumpt.sh @@ -1,10 +1,6 @@ #!/bin/bash -mkdir -p dist/tools -export GOBIN="$PWD/dist/tools" -go install mvdan.cc/gofumpt@latest - -find . -name '*.go' -exec "$GOBIN/gofumpt" -extra -w {} \+ +find . -name '*.go' -exec gofumpt -extra -w {} \+ if [ -n "${CI:-}" ]; then git diff --exit-code