52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { loadEnv } from "../src/config/env.js";
|
|
import { DedupeStore } from "../src/domain/dedupe-store.js";
|
|
import { runReview } from "../src/run/review-runner.js";
|
|
import { RoutedEvent } from "../src/types/events.js";
|
|
|
|
async function main(): Promise<void> {
|
|
const [owner, repo, prRaw, headSha = "dry-run-sha"] = process.argv.slice(2);
|
|
if (!owner || !repo || !prRaw) {
|
|
throw new Error("Usage: npm run dry-run -- <owner> <repo> <pr_number> [head_sha]");
|
|
}
|
|
const prNumber = Number(prRaw);
|
|
if (Number.isNaN(prNumber)) {
|
|
throw new Error("pr_number must be a number");
|
|
}
|
|
|
|
const env = loadEnv();
|
|
const event: RoutedEvent = {
|
|
kind: "review_requested",
|
|
payload: {
|
|
action: "review_requested",
|
|
pull_request: {
|
|
number: prNumber,
|
|
title: "dry run",
|
|
body: "",
|
|
head: { sha: headSha, ref: "dry-run-head" },
|
|
base: { ref: env.DEFAULT_BASE_BRANCH },
|
|
labels: []
|
|
},
|
|
repository: {
|
|
owner: { login: owner },
|
|
name: repo,
|
|
full_name: `${owner}/${repo}`
|
|
},
|
|
requested_reviewer: { login: env.GITEA_BOT_LOGIN }
|
|
}
|
|
};
|
|
|
|
const dedupe = new DedupeStore(env.DEDUPE_TTL_SECONDS);
|
|
const outcome = await runReview({
|
|
env,
|
|
event,
|
|
dedupe,
|
|
correlationId: "dry-run"
|
|
});
|
|
console.log(`dry-run outcome: ${outcome}`);
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error(error);
|
|
process.exitCode = 1;
|
|
});
|