93 lines
2.5 KiB
Bash
Executable File
93 lines
2.5 KiB
Bash
Executable File
#!/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" |