Review on request (#9)
A pull request comment that asks for a review now posts a real review, not a plain comment: the review file decides, the event no longer does. Verified with deno fmt, lint and check. Reviewed-on: #9 Co-authored-by: bot <temeddix@gmail.com> Co-committed-by: bot <temeddix@gmail.com>
This commit was merged in pull request #9.
This commit is contained in:
@@ -18,7 +18,8 @@ the head of the pull request when there is one, with full history and the
|
||||
author's push credentials. Read the code there, run its checks and tests when
|
||||
they bear on the task, and push from there.
|
||||
|
||||
For a `pull_request` event, review the PR without changing code, using the
|
||||
For a `pull_request` event, and for a comment on a pull request that asks you to
|
||||
review it, review the PR without changing code, using the
|
||||
`requesting-code-review` skill from superpowers: run its code reviewer template
|
||||
against the PR's base and head. Run the project's checks on the head and treat a
|
||||
failure as at least Important. Check the whole repository against the code rules
|
||||
|
||||
@@ -59,10 +59,10 @@ async function postComment(body: string): Promise<void> {
|
||||
});
|
||||
}
|
||||
|
||||
// A pull request event is a review request, so the review is posted instead
|
||||
// of the response. It comes through a file, because a final chat message picks
|
||||
// up narration while a file's first line is written on purpose. That line is
|
||||
// the verdict, matched whole; anything unexpected only comments, never
|
||||
// A review is posted whenever the agent wrote one, whether a review request or
|
||||
// a comment asked for it. It comes through a file, because a final chat message
|
||||
// picks up narration while a file's first line is written on purpose. That line
|
||||
// is the verdict, matched whole; anything unexpected only comments, never
|
||||
// approves. The mark in front is added here, so it is never part of the match.
|
||||
const REVIEW_PATH = `${await Deno.makeTempDir()}/review.md`;
|
||||
const VERDICTS: Record<string, [event: string, mark: string]> = {
|
||||
@@ -71,10 +71,13 @@ const VERDICTS: Record<string, [event: string, mark: string]> = {
|
||||
};
|
||||
|
||||
async function postResult(body: string): Promise<void> {
|
||||
if (EVENT !== "pull_request") return postComment(body);
|
||||
const review = await Deno.readTextFile(REVIEW_PATH).catch(() => {
|
||||
const review = await Deno.readTextFile(REVIEW_PATH).catch(() => null);
|
||||
if (review === null) {
|
||||
if (EVENT === "pull_request") {
|
||||
throw new Error(`no review was written to ${REVIEW_PATH}`);
|
||||
});
|
||||
}
|
||||
return postComment(body);
|
||||
}
|
||||
const [verdict, ...rest] = review.split("\n");
|
||||
const [event, mark] = VERDICTS[verdict.trim()] ?? ["COMMENT", "💬"];
|
||||
await gitea(REVIEWER_TOKEN, `repos/${REPO}/pulls/${INDEX}/reviews`, {
|
||||
|
||||
Reference in New Issue
Block a user