fix: post-then-cleanup flow, remove dead code, pagination
- PostReview now returns *Review (id + user login from response) - Delete flow: post first, then delete stale reviews by same user - No read:user scope needed (identity from POST response) - Removed GetAuthenticatedUser (requires scope we lack) - ListReviews: full pagination (loops until partial page) - envOrDefaultBool: case-insensitive, whitespace-trimmed - action.yml: document accepted boolean values - Tests updated for new PostReview signature
This commit is contained in:
+18
-22
@@ -196,34 +196,30 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
// Delete previous reviews from this bot if update-existing is enabled
|
||||
if *updateExisting {
|
||||
login, err := giteaClient.GetAuthenticatedUser(ctx)
|
||||
log.Printf("Posting review (event=%s)...", event)
|
||||
posted, err := giteaClient.PostReview(ctx, owner, repoName, prNumber, event, reviewBody)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to post review: %v", err)
|
||||
}
|
||||
log.Printf("Review posted (id=%d, user=%s)", posted.ID, posted.User.Login)
|
||||
|
||||
// Delete stale reviews from this bot if update-existing is enabled
|
||||
if *updateExisting && posted.User.Login != "" {
|
||||
reviews, err := giteaClient.ListReviews(ctx, owner, repoName, prNumber)
|
||||
if err != nil {
|
||||
log.Printf("Warning: could not determine reviewer identity: %v", err)
|
||||
log.Printf("Warning: could not list existing reviews: %v", err)
|
||||
} else {
|
||||
reviews, err := giteaClient.ListReviews(ctx, owner, repoName, prNumber)
|
||||
if err != nil {
|
||||
log.Printf("Warning: could not list existing reviews: %v", err)
|
||||
} else {
|
||||
for _, r := range reviews {
|
||||
if r.User.Login == login {
|
||||
if err := giteaClient.DeleteReview(ctx, owner, repoName, prNumber, r.ID); err != nil {
|
||||
log.Printf("Warning: could not delete old review %d: %v", r.ID, err)
|
||||
} else {
|
||||
log.Printf("Deleted previous review %d", r.ID)
|
||||
}
|
||||
for _, r := range reviews {
|
||||
if r.User.Login == posted.User.Login && r.ID != posted.ID {
|
||||
if err := giteaClient.DeleteReview(ctx, owner, repoName, prNumber, r.ID); err != nil {
|
||||
log.Printf("Warning: could not delete old review %d: %v", r.ID, err)
|
||||
} else {
|
||||
log.Printf("Deleted stale review %d", r.ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
log.Printf("Posting review (event=%s)...", event)
|
||||
if err := giteaClient.PostReview(ctx, owner, repoName, prNumber, event, reviewBody); err != nil {
|
||||
log.Fatalf("Failed to post review: %v", err)
|
||||
}
|
||||
log.Printf("Review posted successfully!")
|
||||
}
|
||||
|
||||
// fetchFileContext fetches the full content of modified files from the PR branch.
|
||||
@@ -359,7 +355,7 @@ func envOrDefaultInt(key string, defaultVal int) int {
|
||||
}
|
||||
|
||||
func envOrDefaultBool(key string, defaultVal bool) bool {
|
||||
v := os.Getenv(key)
|
||||
v := strings.TrimSpace(strings.ToLower(os.Getenv(key)))
|
||||
if v == "" {
|
||||
return defaultVal
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user