#!/bin/bash

# Prepare UPM for release

echo "🚀 Preparing UPM for release..."

# Check if all required files exist
required_files=("package.json" "README.md" "LICENSE" "tsconfig.json")
for file in "${required_files[@]}"; do
    if [ ! -f "$file" ]; then
        echo "❌ Missing required file: $file"
        exit 1
    fi
done

# Clean previous builds
echo "🧹 Cleaning previous builds..."
rm -rf dist/ releases/

# Install dependencies
echo "📦 Installing dependencies..."
npm ci

# Build project
echo "🔨 Building project..."
npm run build

# Run tests (if available)
if [ -f "jest.config.js" ]; then
    echo "🧪 Running tests..."
    npm test || echo "⚠️  Tests failed or not implemented"
fi

# Create releases directory
mkdir -p releases

# Get version
VERSION=$(node -p "require('./package.json').version")

echo "📋 Version: $VERSION"

# Create npm package
echo "📦 Creating npm package..."
npm pack
mv upm-*.tgz releases/

# Create tarball for distribution
echo "🗜️ Creating distribution tarball..."
tar -czf "releases/upm-v${VERSION}-dist.tar.gz" \
    dist/ \
    bin/ \
    package.json \
    package-lock.json \
    README.md \
    LICENSE \
    QUICK_START.md \
    PUBLISHING.md \
    .npmignore \
    install.sh

# Create source tarball
echo "📚 Creating source tarball..."
tar -czf "releases/upm-v${VERSION}-source.tar.gz" \
    src/ \
    bin/ \
    package.json \
    package-lock.json \
    tsconfig.json \
    README.md \
    LICENSE \
    QUICK_START.md \
    PUBLISHING.md \
    examples/

echo "✅ Release preparation complete!"
echo ""
echo "📦 Release artifacts in releases/:"
ls -la releases/
echo ""
echo "📝 Next steps:"
echo "1. Test locally: npm link && upm --version"
echo "2. Update version: npm version patch/minor/major"
echo "3. Publish to npm: npm publish"
echo "4. Create GitHub release: git tag v${VERSION} && git push --tags"
echo "5. Upload artifacts to GitHub release"