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;
|
flags[name] = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (eq === -1) i += 1;
|
if (eq !== -1) {
|
||||||
const value = eq === -1 ? argv[i] : arg.slice(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('--')) {
|
if (value === undefined || value.startsWith('--')) {
|
||||||
throw new ScriptError('MISSING_FLAG', `--${name} 需要一個值`);
|
throw new ScriptError(
|
||||||
|
'MISSING_FLAG',
|
||||||
|
`--${name} 需要一個值;值本身以 -- 開頭時請改用 --${name}=值 的寫法`,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
flags[name] = value;
|
flags[name] = value;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user