45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package pierre
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
"log"
|
||
)
|
||
|
||
func (s *Service) MakeReview(ctx context.Context, organisation string, repo string, prID int) error {
|
||
// Fetch Diff using positional args from shared RepoArgs
|
||
diff, err := s.git.GetDiff(ctx, organisation, repo, prID)
|
||
defer diff.Close()
|
||
if err != nil {
|
||
return fmt.Errorf("error fetching diff: %w", err)
|
||
}
|
||
|
||
// Run Logic
|
||
comments, err := s.judgePR(ctx, diff)
|
||
if err != nil {
|
||
return fmt.Errorf("error judging PR: %w", err)
|
||
}
|
||
|
||
fmt.Printf("Analysis complete. Found %d issues.\n---\n", len(comments))
|
||
|
||
model := s.chat.GetProviderName()
|
||
|
||
for _, c := range comments {
|
||
c.Message = fmt.Sprintf("%s (Generated by: %s)", c.Message, model)
|
||
|
||
if s.disableComments {
|
||
// Dry‑run: just log what would have been posted.
|
||
log.Printf("dry‑run: %s:%d => %s", c.File, c.Line, c.Message)
|
||
} else {
|
||
// Normal mode: print to stdout and post the comment to the VCS.
|
||
fmt.Printf("File: %s\nLine: %d\nMessage: %s\n%s\n",
|
||
c.File, c.Line, c.Message, "---")
|
||
if err := s.git.AddComment(ctx, organisation, repo, prID, c); err != nil {
|
||
log.Printf("Failed to add comment: %v", err)
|
||
}
|
||
}
|
||
}
|
||
|
||
return nil
|
||
}
|