#!/bin/bash

# vibe-stocks npm publish script

echo "🚀 Preparing to publish vibe-stocks to npm..."

# Check if npm is logged in
if ! npm whoami &> /dev/null; then
    echo "❌ You need to login to npm first"
    echo "Run: npm login"
    exit 1
fi

# Get current npm user
NPM_USER=$(npm whoami)
echo "✅ Logged in as: $NPM_USER"

# Update package.json with correct repository if needed
echo "📦 Checking package.json..."

# Run npm install to ensure dependencies are correct
echo "📥 Installing dependencies..."
npm install

# Run a basic test to ensure the CLI works
echo "🧪 Testing CLI..."
node bin/vibe-stocks.js --version

if [ $? -ne 0 ]; then
    echo "❌ CLI test failed"
    exit 1
fi

echo "✅ CLI test passed"

# Check if package name is available
echo "🔍 Checking if package name is available..."
if npm view vibe-stocks &> /dev/null; then
    echo "⚠️  Package 'vibe-stocks' already exists on npm"
    echo "Current version: $(npm view vibe-stocks version)"
    echo ""
    echo "Options:"
    echo "1. Bump version and publish update"
    echo "2. Use a different package name"
    echo "3. Cancel"
    read -p "Choose (1/2/3): " choice
    
    case $choice in
        1)
            echo "Bumping version..."
            npm version patch
            ;;
        2)
            read -p "Enter new package name: " NEW_NAME
            # Update package.json with new name
            sed -i.bak "s/\"name\": \"vibe-stocks\"/\"name\": \"$NEW_NAME\"/" package.json
            echo "Updated package name to: $NEW_NAME"
            ;;
        3)
            echo "Cancelled"
            exit 0
            ;;
    esac
else
    echo "✅ Package name 'vibe-stocks' is available"
fi

# Final confirmation
echo ""
echo "📋 Package Summary:"
echo "Name: $(node -p "require('./package.json').name")"
echo "Version: $(node -p "require('./package.json').version")"
echo "Description: $(node -p "require('./package.json').description")"
echo ""
read -p "Ready to publish? (y/n): " -n 1 -r
echo ""

if [[ $REPLY =~ ^[Yy]$ ]]; then
    echo "🚀 Publishing to npm..."
    npm publish --access public
    
    if [ $? -eq 0 ]; then
        echo ""
        echo "✅ Successfully published!"
        echo ""
        echo "🎉 Users can now run:"
        echo "   npx $(node -p "require('./package.json').name")"
        echo ""
        echo "📦 View on npm:"
        echo "   https://www.npmjs.com/package/$(node -p "require('./package.json').name")"
    else
        echo "❌ Publishing failed"
        exit 1
    fi
else
    echo "❌ Publishing cancelled"
    exit 0
fi