| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #!/bin/bash
- # 快速打包 SDK 脚本
- set -e
- PACKAGE_NAME=$1
- VERSION=$2
- if [ -z "$PACKAGE_NAME" ] || [ -z "$VERSION" ]; then
- echo "用法: ./build_sdk.sh <PackageName> <Version>"
- echo ""
- echo "示例:"
- echo " ./build_sdk.sh BaseCore 1.0.0"
- echo " ./build_sdk.sh BaseCommon 1.0.0"
- echo " ./build_sdk.sh CapabilityPush 1.0.0"
- exit 1
- fi
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- cd "$SCRIPT_DIR"
- if [ ! -d "$PACKAGE_NAME" ]; then
- echo "❌ 错误: 找不到包 '$PACKAGE_NAME'"
- echo ""
- echo "可用的包:"
- ls -d */ | grep -E "^(Base|Capability)" | sed 's|/$||' | sed 's/^/ - /'
- exit 1
- fi
- cd "$PACKAGE_NAME"
- echo "=== 打包 $PACKAGE_NAME v$VERSION ==="
- echo ""
- # 1. 检查 Package.swift
- if [ ! -f "Package.swift" ]; then
- echo "❌ 错误: 找不到 Package.swift"
- exit 1
- fi
- # 2. 编译
- echo "1. 编译 $PACKAGE_NAME..."
- swift build
- if [ $? -ne 0 ]; then
- echo "❌ 编译失败"
- exit 1
- fi
- echo " ✅ 编译成功"
- echo ""
- # 3. 测试
- echo "2. 运行测试..."
- if [ -d "Tests" ] && [ "$(ls -A Tests 2>/dev/null)" ]; then
- swift test
- if [ $? -ne 0 ]; then
- echo "❌ 测试失败"
- exit 1
- fi
- echo " ✅ 测试通过"
- else
- echo " ⚠️ 没有测试文件,跳过"
- fi
- echo ""
- # 4. 检查 Git(可选)
- if [ -d ".git" ]; then
- echo "3. 创建 Git 标签..."
-
- # 检查是否有未提交的更改
- if [ -n "$(git status --porcelain)" ]; then
- echo " ⚠️ 有未提交的更改,建议先提交"
- read -p " 是否继续?(y/n) " -n 1 -r
- echo
- if [[ ! $REPLY =~ ^[Yy]$ ]]; then
- exit 1
- fi
- fi
-
- # 检查标签是否已存在
- if git rev-parse "$VERSION" >/dev/null 2>&1; then
- echo " ⚠️ 标签 $VERSION 已存在"
- read -p " 是否覆盖?(y/n) " -n 1 -r
- echo
- if [[ ! $REPLY =~ ^[Yy]$ ]]; then
- exit 1
- fi
- git tag -d "$VERSION" 2>/dev/null || true
- fi
-
- # 创建标签
- git tag "$VERSION"
- echo " ✅ 标签已创建: $VERSION"
- echo ""
- echo " 提示: 使用以下命令推送标签:"
- echo " git push origin main"
- echo " git push origin $VERSION"
- else
- echo "3. Git 仓库未初始化,跳过标签创建"
- echo " 提示: 运行 'git init' 初始化仓库"
- fi
- echo ""
- echo "✅ $PACKAGE_NAME v$VERSION 打包完成!"
- echo ""
- echo "下一步:"
- echo " 1. 如果使用 Git,推送标签:git push origin $VERSION"
- echo " 2. 在其他项目中使用:.package(url: \"...\", from: \"$VERSION\")"
|