#!/bin/bash
set -e # 遇到错误即停止

# 解析参数
GIT_MODE=false
for arg in "$@"; do
    case $arg in
        --git) GIT_MODE=true ;;
    esac
done

echo "📦 准备发布新版本..."

# patch-manifest.json 由手动维护，不再自动构建

if [ "$GIT_MODE" = true ]; then
    # 1. 添加所有变动
    git add .

    # 2. 检查是否有未提交的代码，如果有则先提交
    if ! git diff-index --quiet HEAD; then
        echo "📝 发现有修改的内容，正在自动提交..."
        git commit -m "chore: auto update before publish"
    else
        echo "✅ 工作区很干净，不需要额外提交代码。"
    fi
fi

# 3. 自动更新最小版本号 (npm version patch 会自动再做一个改 package.json 的 commit 并且打上 Tag)
echo "📈 增加 Patch 版本号..."
npm version patch

# 4. 发布到 npm
echo "🚀 优先发布到 npm 仓库..."
npm publish

if [ "$GIT_MODE" = true ]; then
    # 5. 推送代码和 Tag 到 GitHub
    echo "☁️ 推送代码和版本 Tag 到 GitHub..."
    git push origin main || echo "⚠️  Git 推送失败 (网络问题)，但不影响 npm 发布！请后续手动检查。"
    git push origin --tags || true
fi

VERSION=$(node -p "require('./package.json').version")
echo "🎉 发布流执行完成！当前发布 NPM 版本号：v${VERSION}"
