jiachenlong/scripts/version_sync.sh

93 lines
2.5 KiB
Bash
Executable File
Raw Permalink 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/bash
# ========================================
# 版本同步脚本 - 只更新修改的文件
# 用法: ./scripts/version_sync.sh [patch|minor|major|custom]
# ========================================
set -e
REPO_DIR="/root/.openclaw/workspace/jiachenlong"
VERSION_FILE="$REPO_DIR/config/VERSION.json"
cd "$REPO_DIR"
# 获取当前版本
CURRENT=$(python3 -c "import json; print(json.load(open('$VERSION_FILE'))['version'])")
echo "📌 当前版本: $CURRENT"
# 解析版本号
MAJOR=$(echo $CURRENT | cut -d. -f1)
MINOR=$(echo $CURRENT | cut -d. -f2)
PATCH=$(echo $CURRENT | cut -d. -f3)
# 根据参数决定新版本
case "${1:-patch}" in
patch) NEW="$MAJOR.$MINOR.$((PATCH+1))";;
minor) NEW="$MAJOR.$((MINOR+1)).0";;
major) NEW="$((MAJOR+1)).0.0";;
*) NEW="${1:-$CURRENT}";;
esac
echo "📌 新版本: $NEW"
# 1. 更新VERSION.json主版本号
python3 << EOF
import json
with open('$VERSION_FILE') as f:
v = json.load(f)
v['version'] = '$NEW'
v['updated'] = '$(date +%Y-%m-%d)'
with open('$VERSION_FILE', 'w') as f:
json.dump(v, f, indent=2, ensure_ascii=False)
print("✅ VERSION.json 主版本已更新")
EOF
# 2. 同步VERSION.json中的版本到文件头部只同步VERSION.json中已记录的版本
python3 << 'EOF'
import json
import re
import os
VERSION = '$NEW'
REPO = '$REPO_DIR'
with open(f'{REPO}/config/VERSION.json') as f:
v = json.load(f)
pages = v['modules']['frontend']['pages']
routers = v['modules']['backend']['routers']
# 前端
for fname, ver in pages.items():
fpath = f'{REPO}/frontend/src/pages/{fname}.jsx'
if os.path.exists(fpath):
with open(fpath, 'r') as f:
content = f.read()
# 只更新VERSION.json中记录的版本
new_content = re.sub(r'Version: [\d.]+', f'Version: {ver}', content, count=1)
with open(fpath, 'w') as f:
f.write(new_content)
print(f" ✅ {fname}.jsx: {ver}")
# 后端
for fname, ver in routers.items():
fpath = f'{REPO}/backend/app/routers/{fname}.py'
if os.path.exists(fpath):
with open(fpath, 'r') as f:
content = f.read()
new_content = re.sub(r'Version: [\d.]+', f'Version: {ver}', content, count=1)
with open(fpath, 'w') as f:
f.write(new_content)
print(f" ✅ {fname}.py: {ver}")
print("✅ 所有文件版本已同步")
EOF
# 3. 提交
git add .
git commit -m "v$NEW - 版本自动更新" || echo "无新更改"
echo ""
echo "✅ 完成!版本: $CURRENT$NEW"