From c8f7ab42f2c5d88c7c23e68ee4ac9b0f681121d5 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 17 Sep 2026 14:05:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E5=8F=83=E6=95=B8):=20parseIndex=20?= =?UTF-8?q?=E6=8A=BD=E5=88=B0=20lib=EF=BC=8C=E5=9B=9B=E6=94=AF=E8=85=B3?= =?UTF-8?q?=E6=9C=AC=E5=85=B1=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 同一段 /^[1-9]\d*$/ 與 BAD_INDEX 已經抄了四份。lib 本來就放著同性質的 parseRepo, 這一支該待在它旁邊。 Co-Authored-By: Claude Opus 5 (1M context) --- scripts/issue-extract.js | 7 +------ scripts/issue-link.js | 7 +------ scripts/issue-update.js | 7 +------ scripts/lib.js | 13 +++++++++++++ scripts/project-add.js | 7 +------ 5 files changed, 17 insertions(+), 24 deletions(-) diff --git a/scripts/issue-extract.js b/scripts/issue-extract.js index d9a5423..6665c94 100644 --- a/scripts/issue-extract.js +++ b/scripts/issue-extract.js @@ -16,6 +16,7 @@ import { main, pages, parseFlags, + parseIndex, parseRepo, preflight, resolveLogin, @@ -70,12 +71,6 @@ main(async () => { }; }); -function parseIndex(value) { - if (!/^[1-9]\d*$/.test(value)) { - throw new ScriptError('BAD_INDEX', `--index 需為正整數,收到的是 ${value}`); - } - return Number(value); -} async function fetchIssue(login, repo, index, path) { const response = await giteaRequest(login, 'GET', path); diff --git a/scripts/issue-link.js b/scripts/issue-link.js index 722ec28..d9f25c6 100644 --- a/scripts/issue-link.js +++ b/scripts/issue-link.js @@ -19,6 +19,7 @@ import { giteaRequest, main, parseFlags, + parseIndex, parseRepo, preflight, resolveLogin, @@ -82,12 +83,6 @@ main(async () => { return { repo, index, added, skipped }; }); -function parseIndex(value, what) { - if (!/^[1-9]\d*$/.test(String(value))) { - throw new ScriptError('BAD_INDEX', `${what} 需為正整數,收到的是 ${value}`); - } - return Number(value); -} /** * 解析逗號分隔的議題編號。 diff --git a/scripts/issue-update.js b/scripts/issue-update.js index 8dd0eda..17ac0e0 100644 --- a/scripts/issue-update.js +++ b/scripts/issue-update.js @@ -20,6 +20,7 @@ import { giteaRequest, main, parseFlags, + parseIndex, parseRepo, preflight, resolveLogin, @@ -76,12 +77,6 @@ main(async () => { }; }); -function parseIndex(value) { - if (!/^[1-9]\d*$/.test(value)) { - throw new ScriptError('BAD_INDEX', `--index 需為正整數,收到的是 ${value}`); - } - return Number(value); -} function parseDueDate(value) { if (value === undefined) return null; diff --git a/scripts/lib.js b/scripts/lib.js index 5b43d13..24b8d5c 100644 --- a/scripts/lib.js +++ b/scripts/lib.js @@ -88,6 +88,19 @@ export function parseFlags(argv, spec = {}) { return flags; } +/** + * 驗證議題編號。四支腳本都要做這件事,錯誤碼也該一致。 + * @param {string|number} value + * @param {string} what 出現在錯誤訊息裡的欄位名,例如 '--index' + * @returns {number} + */ +export function parseIndex(value, what = '--index') { + if (!/^[1-9]\d*$/.test(String(value))) { + throw new ScriptError('BAD_INDEX', `${what} 需為正整數,收到的是 ${value}`); + } + return Number(value); +} + /** * 驗證並正規化 owner/name 形式的 repo。 * @param {string} value diff --git a/scripts/project-add.js b/scripts/project-add.js index 18461af..85d8319 100644 --- a/scripts/project-add.js +++ b/scripts/project-add.js @@ -18,6 +18,7 @@ import { giteaRequest, main, parseFlags, + parseIndex, parseRepo, preflight, resolveLogin, @@ -61,12 +62,6 @@ main(async () => { return { repo, index, project, alreadyThere: false }; }); -function parseIndex(value) { - if (!/^[1-9]\d*$/.test(value)) { - throw new ScriptError('BAD_INDEX', `--index 需為正整數,收到的是 ${value}`); - } - return Number(value); -} /** * 把 `--project` 解析成 {id, title}。