build_sdk.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #!/bin/bash
  2. # 快速打包 SDK 脚本
  3. set -e
  4. PACKAGE_NAME=$1
  5. VERSION=$2
  6. if [ -z "$PACKAGE_NAME" ] || [ -z "$VERSION" ]; then
  7. echo "用法: ./build_sdk.sh <PackageName> <Version>"
  8. echo ""
  9. echo "示例:"
  10. echo " ./build_sdk.sh BaseCore 1.0.0"
  11. echo " ./build_sdk.sh BaseCommon 1.0.0"
  12. echo " ./build_sdk.sh CapabilityPush 1.0.0"
  13. exit 1
  14. fi
  15. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  16. cd "$SCRIPT_DIR"
  17. if [ ! -d "$PACKAGE_NAME" ]; then
  18. echo "❌ 错误: 找不到包 '$PACKAGE_NAME'"
  19. echo ""
  20. echo "可用的包:"
  21. ls -d */ | grep -E "^(Base|Capability)" | sed 's|/$||' | sed 's/^/ - /'
  22. exit 1
  23. fi
  24. cd "$PACKAGE_NAME"
  25. echo "=== 打包 $PACKAGE_NAME v$VERSION ==="
  26. echo ""
  27. # 1. 检查 Package.swift
  28. if [ ! -f "Package.swift" ]; then
  29. echo "❌ 错误: 找不到 Package.swift"
  30. exit 1
  31. fi
  32. # 2. 编译
  33. echo "1. 编译 $PACKAGE_NAME..."
  34. swift build
  35. if [ $? -ne 0 ]; then
  36. echo "❌ 编译失败"
  37. exit 1
  38. fi
  39. echo " ✅ 编译成功"
  40. echo ""
  41. # 3. 测试
  42. echo "2. 运行测试..."
  43. if [ -d "Tests" ] && [ "$(ls -A Tests 2>/dev/null)" ]; then
  44. swift test
  45. if [ $? -ne 0 ]; then
  46. echo "❌ 测试失败"
  47. exit 1
  48. fi
  49. echo " ✅ 测试通过"
  50. else
  51. echo " ⚠️ 没有测试文件,跳过"
  52. fi
  53. echo ""
  54. # 4. 检查 Git(可选)
  55. if [ -d ".git" ]; then
  56. echo "3. 创建 Git 标签..."
  57. # 检查是否有未提交的更改
  58. if [ -n "$(git status --porcelain)" ]; then
  59. echo " ⚠️ 有未提交的更改,建议先提交"
  60. read -p " 是否继续?(y/n) " -n 1 -r
  61. echo
  62. if [[ ! $REPLY =~ ^[Yy]$ ]]; then
  63. exit 1
  64. fi
  65. fi
  66. # 检查标签是否已存在
  67. if git rev-parse "$VERSION" >/dev/null 2>&1; then
  68. echo " ⚠️ 标签 $VERSION 已存在"
  69. read -p " 是否覆盖?(y/n) " -n 1 -r
  70. echo
  71. if [[ ! $REPLY =~ ^[Yy]$ ]]; then
  72. exit 1
  73. fi
  74. git tag -d "$VERSION" 2>/dev/null || true
  75. fi
  76. # 创建标签
  77. git tag "$VERSION"
  78. echo " ✅ 标签已创建: $VERSION"
  79. echo ""
  80. echo " 提示: 使用以下命令推送标签:"
  81. echo " git push origin main"
  82. echo " git push origin $VERSION"
  83. else
  84. echo "3. Git 仓库未初始化,跳过标签创建"
  85. echo " 提示: 运行 'git init' 初始化仓库"
  86. fi
  87. echo ""
  88. echo "✅ $PACKAGE_NAME v$VERSION 打包完成!"
  89. echo ""
  90. echo "下一步:"
  91. echo " 1. 如果使用 Git,推送标签:git push origin $VERSION"
  92. echo " 2. 在其他项目中使用:.package(url: \"...\", from: \"$VERSION\")"