#!/bin/bash

# vibe-stocks deployment script
# Run this locally after ensuring you're logged in to npm

set -e  # Exit on any error

echo "🚀 vibe-stocks Deployment Script"
echo "================================="
echo ""

# Check if we're in the right directory
if [[ ! -f "package.json" ]] || [[ ! -f "bin/vibe-stocks.js" ]]; then
    echo "❌ Please run this script from the vibe-stocks directory"
    exit 1
fi

# Get package info
PACKAGE_NAME=$(node -p "require('./package.json').name")
PACKAGE_VERSION=$(node -p "require('./package.json').version")

echo "📦 Package: $PACKAGE_NAME@$PACKAGE_VERSION"
echo ""

# Check npm login status
echo "🔐 Checking npm authentication..."
if npm whoami &> /dev/null; then
    NPM_USER=$(npm whoami)
    echo "✅ Logged in as: $NPM_USER"
else
    echo "❌ Not logged in to npm"
    echo ""
    echo "Please run: npm login"
    echo "Then run this script again"
    exit 1
fi

echo ""

# Run pre-publish checks
echo "🧪 Running pre-publish checks..."
node pre-publish-check.js

if [[ $? -ne 0 ]]; then
    echo "❌ Pre-publish checks failed"
    exit 1
fi

echo ""

# Check if package already exists
echo "🔍 Checking if package exists on npm..."
if npm view $PACKAGE_NAME &> /dev/null; then
    CURRENT_VERSION=$(npm view $PACKAGE_NAME version)
    echo "⚠️  Package already exists on npm (version: $CURRENT_VERSION)"
    
    # Compare versions
    if [[ "$PACKAGE_VERSION" == "$CURRENT_VERSION" ]]; then
        echo "❌ Same version already published"
        echo "Run 'npm version patch' to bump version first"
        exit 1
    fi
    
    echo "📈 Publishing new version: $CURRENT_VERSION -> $PACKAGE_VERSION"
else
    echo "✅ Package name available"
fi

echo ""

# Final confirmation
echo "📋 Ready to publish:"
echo "   Name: $PACKAGE_NAME"
echo "   Version: $PACKAGE_VERSION"
echo "   Author: $(node -p "require('./package.json').author")"
echo ""

read -p "Continue with publishing? (y/N): " -n 1 -r
echo ""

if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    echo "❌ Publishing cancelled"
    exit 0
fi

# Publish to npm
echo ""
echo "🚀 Publishing to npm..."
npm publish --access public

if [[ $? -eq 0 ]]; then
    echo ""
    echo "🎉 Successfully published $PACKAGE_NAME@$PACKAGE_VERSION!"
    echo ""
    echo "📦 View on npm: https://www.npmjs.com/package/$PACKAGE_NAME"
    echo ""
    echo "✨ Users can now install with:"
    echo "   npx $PACKAGE_NAME"
    echo "   npm install -g $PACKAGE_NAME"
    echo ""
    echo "🧪 Test the published package:"
    echo "   npx $PACKAGE_NAME@$PACKAGE_VERSION stream AAPL"
    echo ""
    
    # Test the published package
    echo "🔍 Testing published package..."
    sleep 2
    npx $PACKAGE_NAME@$PACKAGE_VERSION --version
    
    if [[ $? -eq 0 ]]; then
        echo "✅ Published package working correctly!"
    else
        echo "⚠️  Published package test failed (may need a moment to propagate)"
    fi
    
else
    echo "❌ Publishing failed"
    echo "Check the error above and try again"
    exit 1
fi