feat(cli): add completion helper and handle review issue releases/closures

This commit is contained in:
Prad Nukala committed 2026-09-30 16:31:15 -04:00
1 parent a64a6c2379
commit d6b483f84e
3 files changed
+116 -79

No files matched your search

+8 -8
View File
@@ -28,7 +28,7 @@
import { movedFromTopics, readReviews } from "../api/src/reviews.ts";
import { github } from "./github.ts";
import { markdownTable, printTable, writeStepSummary } from "./report.ts";
import { coreSet, readProblems } from "./topics.ts";
import { completion, coreSet, readProblems } from "./topics.ts";
const DRY =
process.argv.includes("--dry-run") ||
@@ -112,16 +112,16 @@ const reviewReport: string[][] = [];
let reviewsClosed = 0;
for (const review of reviews.filter((r) => r.open)) {
const pending = review.problems.filter((p) => !p.closedAt).map((p) => p.number);
const progress = `${review.problems.length - pending.length}/${review.problems.length}`;
const set = completion(review.problems);
const progress = `${set.all.length - set.pending.length}/${set.all.length}`;
// An empty review would read as done; leave it for a human, like a topic
// with no core set.
if (review.problems.length === 0) {
if (set.all.length === 0) {
reviewReport.push([`#${review.number}`, review.title, progress, "no sub-issues"]);
continue;
}
if (pending.length > 0) {
reviewReport.push([`#${review.number}`, review.title, progress, `open: ${pending.map((n) => `#${n}`).join(" ")}`]);
if (set.pending.length > 0) {
reviewReport.push([`#${review.number}`, review.title, progress, `open: ${set.pending.map((n) => `#${n}`).join(" ")}`]);
continue;
}
if (DRY) {
@@ -130,8 +130,8 @@ for (const review of reviews.filter((r) => r.open)) {
}
await gh.closeIssue(
review.number,
`Review complete — all ${review.problems.length} problems closed ` +
`(${review.problems.map((p) => `#${p.number}`).join(", ")}).\n\n` +
`Review complete — all ${set.all.length} problems closed ` +
`(${set.all.map((n) => `#${n}`).join(", ")}).\n\n` +
"Closed automatically by `close-topics`.",
);
reviewReport.push([`#${review.number}`, review.title, progress, "closed"]);