claudetool/codereview: add go generate support
Automatically run 'go generate' as part of codereview,
since sketch sometimes forgets to do it.
Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: safe9348e7c24beffk
diff --git a/claudetool/codereview/differential.go b/claudetool/codereview/differential.go
index 334e67d..8688843 100644
--- a/claudetool/codereview/differential.go
+++ b/claudetool/codereview/differential.go
@@ -86,8 +86,25 @@
var errorMessages []string // problems we want the model to address
var infoMessages []string // info the model should consider
+ // Run 'go generate' early, so that it can potentially fix tests that would otherwise fail.
+ generateChanges, err := r.runGenerate(ctx, allPkgList)
+ if err != nil {
+ errorMessages = append(errorMessages, err.Error())
+ }
+ if len(generateChanges) > 0 {
+ buf := new(strings.Builder)
+ buf.WriteString("The following files were changed by running `go generate`:\n\n")
+ for _, f := range generateChanges {
+ buf.WriteString(f)
+ buf.WriteString("\n")
+ }
+ buf.WriteString("\nPlease amend your latest git commit with these changes.\n")
+ infoMessages = append(infoMessages, buf.String())
+ }
+
// Find potentially related files that should also be considered
// TODO: add some caching here, since this depends only on the initial commit and the changed files, not the details of the changes
+ // TODO: arrange for this to run even in non-Go repos!
relatedFiles, err := r.findRelatedFiles(ctx, changedFiles)
if err != nil {
slog.DebugContext(ctx, "CodeReviewer.Run: failed to find related files", "err", err)