#!/bin/bash # AI Shell 自动发布脚本 set -e VERSION_TYPE=${1:-patch} echo "🚀 AI Shell 自动发布流程开始..." echo "版本类型: $VERSION_TYPE" # 检查是否在项目根目录 if [ ! -f "pyproject.toml" ]; then echo "❌ 请在 ai-shell 项目根目录中运行此脚本" exit 1 fi # 检查工作区是否干净 if [ -n "$(git status --porcelain)" ]; then echo "❌ 工作区有未提交的更改,请先提交或暂存" git status --short exit 1 fi # 获取当前版本 CURRENT_VERSION=$(grep '__version__' ai_shell/__init__.py | cut -d'"' -f2) echo "当前版本: $CURRENT_VERSION" # 升级版本 echo "📈 升级版本..." python scripts/bump_version.py $VERSION_TYPE # 获取新版本 NEW_VERSION=$(grep '__version__' ai_shell/__init__.py | cut -d'"' -f2) echo "新版本: $NEW_VERSION" # 重新构建 echo "📦 重新构建..." uv build # 重新安装 echo "🔧 重新安装..." uv tool install . --force # 验证安装 echo "🧪 验证安装..." if command -v ai &> /dev/null; then INSTALLED_VERSION=$(ai --version 2>/dev/null | grep -o 'v[0-9]\+\.[0-9]\+\.[0-9]\+' | sed 's/v//' || echo "unknown") if [ "$INSTALLED_VERSION" = "$NEW_VERSION" ]; then echo "✅ 安装验证成功: $INSTALLED_VERSION" else echo "⚠️ 版本不匹配: 期望 $NEW_VERSION, 实际 $INSTALLED_VERSION" fi else echo "⚠️ ai 命令未找到,可能需要重新加载 shell" fi # 提交更改 echo "📝 提交更改..." git add . git commit -m "bump: version to v$NEW_VERSION - Update version from $CURRENT_VERSION to $NEW_VERSION - Rebuild package and update dependencies - Ready for release" # 创建标签 echo "🏷️ 创建版本标签..." git tag -a "v$NEW_VERSION" -m "Release version $NEW_VERSION Changes in this release: - Version bump from $CURRENT_VERSION to $NEW_VERSION - Package rebuild and dependency updates" # 推送到远程 echo "🚀 推送到远程仓库..." git push git push --tags echo "" echo "✅ 发布完成!" echo "" echo "📋 发布信息:" echo " 版本: v$NEW_VERSION" echo " 标签: v$NEW_VERSION" echo " 仓库: https://gitea.nosuchip.de/zack/ai-shell" echo "" echo "🔗 查看发布:" echo " 代码: https://gitea.nosuchip.de/zack/ai-shell/src/tag/v$NEW_VERSION" echo " 标签: https://gitea.nosuchip.de/zack/ai-shell/releases/tag/v$NEW_VERSION" echo "" echo "🧪 测试新版本:" echo " ai --version" echo " ai --config" echo " ai \"echo test\""