fix(lib): 讓 --key=value 的值可以本身以 -- 開頭
commit 訊息與 PR 描述裡出現 --flag 是常態,而原本的檢查對兩種寫法一視同仁:值只要以 -- 開頭就報「需要一個值」。空格分隔的寫法確實分不出「值」與「打錯的 flag」,但等號寫法 沒有這個歧義,不該一起擋掉。 這是實際撞到的:拿 commit-split 提交它自己時,--body 的內容第一行就是「--repo 與 --issue-repo 的差別」,整個 commit 因此做不出來。空格寫法的錯誤訊息現在會指路到等號寫法。
This commit is contained in:
+12
-3
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user