#!/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 " 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