diff --git a/go/dagger.json b/go/dagger.json index 1dacef8..7e1afe7 100644 --- a/go/dagger.json +++ b/go/dagger.json @@ -1,6 +1,6 @@ { "name": "go", - "engineVersion": "v0.18.12", + "engineVersion": "v0.18.14", "sdk": { "source": "go" }, diff --git a/go/generate.go b/go/generate.go index 18120b0..c5a832b 100644 --- a/go/generate.go +++ b/go/generate.go @@ -7,6 +7,7 @@ package main import ( "context" + "errors" "fmt" "slices" "strings" @@ -59,32 +60,34 @@ func (g *Generate) Report(ctx context.Context) ([]string, error) { } // Validate no change to the filesystem after running all generate directives. -func (g *Generate) Diff(ctx context.Context) (*dagger.Directory, error) { +func (g *Generate) Diff(ctx context.Context) error { before := g.Ctr.Directory("/src") cmds, err := g.Report(ctx) if err != nil { - return nil, err + return err } fmt.Println(strings.Join(cmds, "\n")) after := g.Ctr.Directory("/src") - beforeDigest, err := before.Digest(ctx) - if err != nil { - return nil, err - } - - afterDigest, err := after.Digest(ctx) + stdout, err := dag.Container(). + From("alpine"). + WithExec([]string{"apk", "add", "diffutils"}). + WithMountedDirectory("/before", before). + WithMountedDirectory("/after", after). + WithExec([]string{"diff", "-r", "-y", "--suppress-common-lines", "/before", "/after"}). + Stdout(ctx) if err != nil { - return nil, err + return err } - if beforeDigest == afterDigest { - return dag.Directory(), nil + fmt.Println(stdout) + if stdout != "" { + return errors.New("generate resulted in difference before and after") } - return before.Diff(after), nil + return nil } // Return all generate directives which would be ran. diff --git a/go/library.go b/go/library.go index dde06cf..1f41f29 100644 --- a/go/library.go +++ b/go/library.go @@ -8,7 +8,6 @@ package main import ( "context" "errors" - "fmt" "dagger/go/internal/dagger" ) @@ -94,21 +93,7 @@ func (lib *Library) Generate( // +default="./..." pkg string, ) error { - diff, err := lib.Module.Generate(pkg).Diff(ctx) - if err != nil { - return err - } - - entries, err := diff.Entries(ctx) - if err != nil { - return nil - } - - if len(entries) > 0 { - return fmt.Errorf("forgot to run go generate: %v", entries) - } - - return nil + return lib.Module.Generate(pkg).Diff(ctx) } // Validate no necessary changes for go.mod or go.sum. diff --git a/go/tests/dagger.json b/go/tests/dagger.json index ea1cdde..08ea1bd 100644 --- a/go/tests/dagger.json +++ b/go/tests/dagger.json @@ -1,6 +1,6 @@ { "name": "go-tests", - "engineVersion": "v0.18.12", + "engineVersion": "v0.18.14", "sdk": { "source": "go" },