Files
cn-rdms/scripts/commit.sh

131 lines
3.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
set -eu
SCRIPT_DIR="$(CDPATH= cd -- "$(dirname "$0")" && pwd)"
REPO_ROOT="$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)"
if ! git -C "$REPO_ROOT" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
printf '%s\n' "当前目录不是 Git 仓库。" >&2
exit 1
fi
if git -C "$REPO_ROOT" diff --cached --quiet; then
printf '%s\n' "当前没有已暂存的改动,请先执行 git add。" >&2
exit 1
fi
choose_type() {
printf '%s\n' ""
printf '%s\n' "请选择提交类型 type"
printf '%s\n' "1. feat"
printf '%s\n' "2. feat-wip"
printf '%s\n' "3. fix"
printf '%s\n' "4. docs"
printf '%s\n' "5. typo"
printf '%s\n' "6. style"
printf '%s\n' "7. refactor"
printf '%s\n' "8. perf"
printf '%s\n' "9. optimize"
printf '%s\n' "10. test"
printf '%s\n' "11. build"
printf '%s\n' "12. ci"
printf '%s\n' "13. chore"
printf '%s\n' "14. revert"
printf '%s' "请输入序号: "
read -r answer
case "$answer" in
1) printf '%s' "feat" ;;
2) printf '%s' "feat-wip" ;;
3) printf '%s' "fix" ;;
4) printf '%s' "docs" ;;
5) printf '%s' "typo" ;;
6) printf '%s' "style" ;;
7) printf '%s' "refactor" ;;
8) printf '%s' "perf" ;;
9) printf '%s' "optimize" ;;
10) printf '%s' "test" ;;
11) printf '%s' "build" ;;
12) printf '%s' "ci" ;;
13) printf '%s' "chore" ;;
14) printf '%s' "revert" ;;
*) return 1 ;;
esac
}
choose_scope() {
printf '%s\n' ""
printf '%s\n' "请选择提交范围 scope"
printf '%s\n' "1. system"
printf '%s\n' "2. gateway"
printf '%s\n' "3. framework"
printf '%s\n' "4. common"
printf '%s\n' "5. security"
printf '%s\n' "6. web"
printf '%s\n' "7. mybatis"
printf '%s\n' "8. redis"
printf '%s\n' "9. mq"
printf '%s\n' "10. rpc"
printf '%s\n' "11. sql"
printf '%s\n' "12. deps"
printf '%s\n' "13. other"
printf '%s' "请输入序号: "
read -r answer
case "$answer" in
1) printf '%s' "system" ;;
2) printf '%s' "gateway" ;;
3) printf '%s' "framework" ;;
4) printf '%s' "common" ;;
5) printf '%s' "security" ;;
6) printf '%s' "web" ;;
7) printf '%s' "mybatis" ;;
8) printf '%s' "redis" ;;
9) printf '%s' "mq" ;;
10) printf '%s' "rpc" ;;
11) printf '%s' "sql" ;;
12) printf '%s' "deps" ;;
13) printf '%s' "other" ;;
*) return 1 ;;
esac
}
while :; do
if type_value="$(choose_type)"; then
break
fi
printf '%s\n' "输入无效,请重新选择。"
done
while :; do
if scope_value="$(choose_scope)"; then
break
fi
printf '%s\n' "输入无效,请重新选择。"
done
while :; do
printf '%s' "请输入提交描述: "
read -r description
description="$(printf '%s' "$description" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')"
if [ -n "$description" ]; then
break
fi
printf '%s\n' "描述不能为空,请重新输入。"
done
message="$type_value($scope_value): $description"
printf '%s\n' ""
printf '%s\n' "提交信息预览:$message"
printf '%s' "确认提交请输入 y取消请输入其他任意内容: "
read -r confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
printf '%s\n' "已取消提交。"
exit 1
fi
git -C "$REPO_ROOT" commit -m "$message"