mirror of
https://github.com/prdlk/leetcode.git
synced 2026-09-16 23:16:26 +00:00
feat(cli): add issue reconciliation scripts and GitHub helper
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Console + GitHub Actions reporting shared by the issue reconcilers.
|
||||
*
|
||||
* Both reconcilers end the same way: an aligned table on stdout, and the same
|
||||
* table as Markdown in the step summary when running under Actions.
|
||||
*/
|
||||
|
||||
/** Print rows[0] as a header, a rule, then the body — every column padded. */
|
||||
export function printTable(rows: string[][]): void {
|
||||
const widths = rows[0]!.map((_, i) => Math.max(...rows.map((r) => r[i]!.length)));
|
||||
const render = (r: string[]) =>
|
||||
r
|
||||
.map((cell, i) => cell.padEnd(widths[i]!))
|
||||
.join(" ")
|
||||
.trimEnd();
|
||||
|
||||
console.log(render(rows[0]!));
|
||||
console.log(widths.map((n) => "─".repeat(n)).join(" "));
|
||||
for (const row of rows.slice(1)) console.log(render(row));
|
||||
}
|
||||
|
||||
/** Same rows as a GitHub-flavoured Markdown table; rows[0] is the header. */
|
||||
export function markdownTable(rows: string[][]): string {
|
||||
const [header, ...body] = rows;
|
||||
return [
|
||||
`| ${header!.join(" | ")} |`,
|
||||
`| ${header!.map(() => "---").join(" | ")} |`,
|
||||
...body.map((r) => `| ${r.join(" | ")} |`),
|
||||
].join("\n");
|
||||
}
|
||||
|
||||
/** Append to the Actions step summary; a no-op outside Actions. */
|
||||
export async function writeStepSummary(markdown: string): Promise<void> {
|
||||
const path = process.env.GITHUB_STEP_SUMMARY;
|
||||
if (!path) return;
|
||||
await Bun.write(path, markdown);
|
||||
}
|
||||
Reference in New Issue
Block a user