jiachenlong/scripts/version_sync.sh

93 lines
2.5 KiB
Bash
Raw Permalink Normal View History

2026-04-19 23:37:08 +08:00
#!/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"