From 1c6e7f85bbae5854e1aebd76a1aec0d576f8adfa Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 17 Sep 2026 08:23:27 +0000 Subject: [PATCH] =?UTF-8?q?fix(lib):=20=E8=AE=93=20--key=3Dvalue=20?= =?UTF-8?q?=E7=9A=84=E5=80=BC=E5=8F=AF=E4=BB=A5=E6=9C=AC=E8=BA=AB=E4=BB=A5?= =?UTF-8?q?=20--=20=E9=96=8B=E9=A0=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 訊息與 PR 描述裡出現 --flag 是常態,而原本的檢查對兩種寫法一視同仁:值只要以 -- 開頭就報「需要一個值」。空格分隔的寫法確實分不出「值」與「打錯的 flag」,但等號寫法 沒有這個歧義,不該一起擋掉。 這是實際撞到的:拿 commit-split 提交它自己時,--body 的內容第一行就是「--repo 與 --issue-repo 的差別」,整個 commit 因此做不出來。空格寫法的錯誤訊息現在會指路到等號寫法。 --- scripts/lib.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/scripts/lib.js b/scripts/lib.js index dca6f77..5b3f3cd 100644 --- a/scripts/lib.js +++ b/scripts/lib.js @@ -99,10 +99,19 @@ export function parseFlags(argv, spec = {}) { flags[name] = true; continue; } - if (eq === -1) i += 1; - const value = eq === -1 ? argv[i] : arg.slice(eq + 1); + if (eq !== -1) { + // --key=value:等號右邊就是值,即使它本身以 -- 開頭也沒有歧義。 + // commit 訊息、PR 描述這種內容裡出現 --flag 是常態,不該因此被當成打錯 flag。 + flags[name] = arg.slice(eq + 1); + continue; + } + i += 1; + const value = argv[i]; if (value === undefined || value.startsWith('--')) { - throw new ScriptError('MISSING_FLAG', `--${name} 需要一個值`); + throw new ScriptError( + 'MISSING_FLAG', + `--${name} 需要一個值;值本身以 -- 開頭時請改用 --${name}=值 的寫法`, + ); } flags[name] = value; }