73 行
3.0 KiB
Bash
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
|