git_hooks/python/pre-commit

40 lines
1.1 KiB
Bash

#!/bin/sh
FILE="pyproject.toml"
# 检查 pyproject.toml 是否被修改
VERSION_CHANGED=$(git diff --cached "$FILE" | grep -E '^\+version =')
if [ -n "$VERSION_CHANGED" ]; then
echo "pyproject.toml 文件中的版本号已被修改,无需手动更新版本号。"
exit 0
fi
# 读取当前版本号
CURRENT_VERSION=$(grep -E '^version' $FILE | awk -F'"' '{print $2}')
echo "current version: $CURRENT_VERSION"
# 检查是否找到版本号
if [ -z "$CURRENT_VERSION" ]; then
echo "Error: version field not found in $FILE."
exit 1
fi
# 将版本号分解为主版本号、次版本号和修订号
MAJOR=$(echo $CURRENT_VERSION | cut -d '.' -f1)
MINOR=$(echo $CURRENT_VERSION | cut -d '.' -f2)
PATCH=$(echo $CURRENT_VERSION | cut -d '.' -f3)
# 自动加一修订号
PATCH=$((PATCH + 1))
# 构造新的版本号
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
echo "new version: $NEW_VERSION"
# 使用 sed 命令更新版本号
sed -i.bak "s/\(version = \"\)[^\"]*\(\"\)/\1$NEW_VERSION\2/" "$FILE"
rm "${FILE}.bak"
# 将修改添加到暂存区
git add "$FILE"
# 提醒用户版本号已更新
echo "Version incremented to $NEW_VERSION"