[tools]
node = "20"

[env]
_.file = ".env"

[tasks.dev]
description = "開発モードで起動"
run = """
if [ ! -f .env ]; then
    echo "⚠️  .env ファイルが見つかりません"
    echo "📝 .env.example をコピーして設定してください:"
    echo "   cp .env.example .env"
    exit 1
fi
. .env && node index.js
"""

[tasks.test]
description = "テストを実行"
run = "npm test"

[tasks.test-api]
description = "APIへの接続テスト"
run = """
if [ ! -f .env ]; then
    echo "⚠️  .env ファイルが見つかりません"
    exit 1
fi
echo "🔍 APIに接続テスト中..."
echo "📡 URL: $CCUSAGE_ON_CLOUD_API_URL"
curl -X POST "$CCUSAGE_ON_CLOUD_API_URL" \
  -H "Authorization: Basic $(echo -n "$CCUSAGE_ON_CLOUD_USERNAME:$CCUSAGE_ON_CLOUD_PASSWORD" | base64)" \
  -H "Content-Type: application/json" \
  -d '{"serverId": "test", "blocks": [{"tokenLimit": 1000000, "totalTokens": 500000, "remainingTokens": 500000}]}' \
  -w "\n📊 HTTP Status: %{http_code}\n"
"""

[tasks.publish]
description = "npmパッケージを公開"
run = """
echo "📦 npm パッケージを公開します..."

# バージョン確認
current_version=$(node -p "require('./package.json').version")
echo "📌 現在のバージョン: $current_version"

# クリーンビルド
echo "🧹 クリーンアップ中..."
rm -rf node_modules package-lock.json
npm install

# テスト実行
echo "🧪 テストを実行中..."
npm test || {
    echo "❌ テストが失敗しました"
    exit 1
}

# npm publish dry-run
echo "🔍 dry-run で確認中..."
npm publish --dry-run

echo ""
echo "📤 本番公開しますか？ (y/N)"
read -r answer
if [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then
    npm publish
    echo "✅ 公開完了！"
    echo "🎉 npx ccusage-on-cloud-client@latest で実行できます"
else
    echo "⏸️  公開をキャンセルしました"
fi
"""

[tasks.version]
description = "バージョンを更新"
run = """
echo "📝 バージョンを更新します"
echo "現在: $(node -p "require('./package.json').version")"
echo ""
echo "どのバージョンを上げますか？"
echo "1) patch (0.0.x)"
echo "2) minor (0.x.0)"
echo "3) major (x.0.0)"
read -r choice

case $choice in
    1) npm version patch ;;
    2) npm version minor ;;
    3) npm version major ;;
    *) echo "❌ 無効な選択"; exit 1 ;;
esac

echo "✅ 新しいバージョン: $(node -p "require('./package.json').version")"
"""