From bf5961e8d11f698ee90483affade1e5bbc172847 Mon Sep 17 00:00:00 2001 From: Affaan Mustafa Date: Sun, 5 Apr 2026 15:15:56 -0700 Subject: [PATCH] fix: refresh existing monthly metrics snapshots --- .github/workflows/monthly-metrics.yml | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/.github/workflows/monthly-metrics.yml b/.github/workflows/monthly-metrics.yml index 7d23ee7d..27fa5973 100644 --- a/.github/workflows/monthly-metrics.yml +++ b/.github/workflows/monthly-metrics.yml @@ -30,6 +30,10 @@ jobs: return match ? Number(match[1]) : null; } + function escapeRegex(value) { + return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + } + function fmt(value) { if (value === null || value === undefined) return "n/a"; return Number(value).toLocaleString("en-US"); @@ -167,14 +171,17 @@ jobs: } const currentBody = issue.body || ""; - if (currentBody.includes(`| ${monthKey} |`)) { - console.log(`Issue #${issue.number} already has snapshot row for ${monthKey}`); - return; - } + const rowPattern = new RegExp(`^\\| ${escapeRegex(monthKey)} \\|.*$`, "m"); - const body = currentBody.includes("| Month (UTC) |") - ? `${currentBody.trimEnd()}\n${row}\n` - : `${intro}\n${row}\n`; + let body; + if (rowPattern.test(currentBody)) { + body = currentBody.replace(rowPattern, row); + console.log(`Refreshed issue #${issue.number} snapshot row for ${monthKey}`); + } else { + body = currentBody.includes("| Month (UTC) |") + ? `${currentBody.trimEnd()}\n${row}\n` + : `${intro}\n${row}\n`; + } await github.rest.issues.update({ owner,