chore(release): 放行技能組稽核修正到預設分支 #22
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env sh
|
||||
# pick-type.sh — 從一組 commit 型別中選出優先度最高的一個。
|
||||
# 用法: pick-type.sh {型別或 commit 標題}...
|
||||
# git log --format=%s {範圍} | pick-type.sh
|
||||
#
|
||||
# 說明: 優先序固定為 revert > fix > feat > perf > refactor > test > docs > style > chore。
|
||||
# 這支腳本是該優先序的唯一真實來源,SKILL.md 不再抄一份。
|
||||
# 帶參數就讀參數,一個參數算一項;沒帶參數就讀標準輸入,一行算一項。
|
||||
# 每一項只取冒號、左括號、驚嘆號之前的字,所以 commit 標題整行餵進來也認得出型別。
|
||||
# 認不得的項目直接略過,不影響其他項目。
|
||||
#
|
||||
# 輸出: 勝出的型別(一行,例如: feat)。
|
||||
# 結束碼: 0 選出型別;2 沒有收到任何輸入;3 輸入裡沒有階梯表內的型別。
|
||||
# 錯誤訊息一律印繁中到 stderr。
|
||||
set -u
|
||||
|
||||
if [ "$#" -gt 0 ]; then
|
||||
RAW=$(printf '%s\n' "$@")
|
||||
else
|
||||
RAW=$(cat)
|
||||
fi
|
||||
|
||||
if [ -z "$(printf '%s' "$RAW" | tr -d '[:space:]')" ]; then
|
||||
echo "錯誤: 沒有收到任何型別。請把 git log 取出的型別集合當參數傳入,或從標準輸入餵進來。" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
NORM=$(printf '%s\n' "$RAW" \
|
||||
| sed -e 's/[(:!].*$//' -e 's/[[:space:]]//g' \
|
||||
| tr '[:upper:]' '[:lower:]')
|
||||
|
||||
for candidate in revert fix feat perf refactor test docs style chore; do
|
||||
if printf '%s\n' "$NORM" | grep -qx "$candidate"; then
|
||||
printf '%s\n' "$candidate"
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
|
||||
echo "錯誤: 輸入裡沒有階梯表內的型別。請確認 commit 訊息符合 {類型}({範圍}): {訊息} 格式,型別限 revert、fix、feat、perf、refactor、test、docs、style、chore。" >&2
|
||||
exit 3
|
||||
Reference in New Issue
Block a user