YwxMobileApp-iOS/scripts/use-sdk.sh

73 行
3.0 KiB
Bash

#!/usr/bin/env bash
# 切换 iOS SDK 引用方式,更新 sdk.properties 和 project.yml,然后重新生成 Xcode 项目
#
# 用法:
# ./scripts/use-sdk.sh main # SNAPSHOT: 使用 main 分支(最新代码)
# ./scripts/use-sdk.sh 1.0.2 # Release: 使用指定 tag
# ./scripts/use-sdk.sh local # 本地调试: 使用本地 SDK 源码路径
#
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
GITEA_URL="https://xuqinmin.com/xuqmGroup/XuqmGroup-iOSSDK.git"
LOCAL_PATH="../../../XuqmGroup/XuqmGroup-iOSSDK"
usage() {
echo "Usage: $0 <main|local|x.y.z>"
echo " main — SNAPSHOT,引用 main 分支(开发期默认)"
echo " local — 本地 SDK 源码路径SDK 开发调试,不要提交此状态)"
echo " x.y.z — 正式版本 tag如 1.0.2"
exit 1
}
[[ $# -eq 1 ]] || usage
REF="$1"
cd "$PROJECT_DIR"
# ── 更新 sdk.properties ───────────────────────────────────────────────────────
sed -i '' "s/^SDK_REF=.*/SDK_REF=${REF}/" sdk.properties
echo "[use-sdk] sdk.properties → SDK_REF=${REF}"
# ── 生成 project.yml 的包引用块 ───────────────────────────────────────────────
if [[ "$REF" == "local" ]]; then
PKG_BLOCK="packages:\n XuqmGroupSDK:\n path: ${LOCAL_PATH}"
echo "[use-sdk] 模式: 本地路径 (${LOCAL_PATH})"
elif [[ "$REF" == "main" ]]; then
PKG_BLOCK="packages:\n XuqmGroupSDK:\n url: ${GITEA_URL}\n branch: main"
echo "[use-sdk] 模式: SNAPSHOT (branch: main)"
else
PKG_BLOCK="packages:\n XuqmGroupSDK:\n url: ${GITEA_URL}\n from: \"${REF}\""
echo "[use-sdk] 模式: Release (from: ${REF})"
fi
# ── 替换 project.yml 中的 packages 块 ────────────────────────────────────────
# 用 Python 替换 packages: 到下一个顶层 key 之间的内容
python3 - "$PKG_BLOCK" <<'PYEOF'
import sys, re
pkg_block = sys.argv[1]
with open('project.yml', 'r') as f:
content = f.read()
# Replace from 'packages:' up to (but not including) the next top-level key
new_content = re.sub(
r'^packages:.*?(?=^\w)',
pkg_block.replace('\\n', '\n') + '\n\n',
content,
flags=re.MULTILINE | re.DOTALL
)
with open('project.yml', 'w') as f:
f.write(new_content)
print("[use-sdk] project.yml 已更新")
PYEOF
# ── 重新生成 Xcode 项目 ───────────────────────────────────────────────────────
if command -v xcodegen &>/dev/null; then
xcodegen generate
echo "[use-sdk] xcodegen generate 完成"
else
echo "[use-sdk] 警告: xcodegen 未安装,请手动运行 xcodegen generate"
fi