#!/bin/bash
# Script to update version across all package files

set -e

if [ -z "$1" ]; then
    echo "Usage: $0 <version>"
    echo "Example: $0 0.4.1"
    exit 1
fi

VERSION=$1
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"

echo "Updating ProofMode to version $VERSION"

# Update Cargo.toml
echo "  Cargo.toml"
sed -i.bak "s/^version = \".*\"/version = \"$VERSION\"/" "$PROJECT_ROOT/Cargo.toml"

# Update Python files
echo "  pyproject.toml (root)"
sed -i.bak "s/^version = \".*\"/version = \"$VERSION\"/" "$PROJECT_ROOT/pyproject.toml"

echo "  scripts/pyproject.toml"
sed -i.bak "s/^version = \".*\"/version = \"$VERSION\"/" "$PROJECT_ROOT/scripts/pyproject.toml"

echo "  cli/python/pyproject.toml"
sed -i.bak "s/^version = \".*\"/version = \"$VERSION\"/" "$PROJECT_ROOT/cli/python/pyproject.toml"

echo "  cli/python/setup.py"
sed -i.bak "s/version=\".*\"/version=\"$VERSION\"/" "$PROJECT_ROOT/cli/python/setup.py"

# Update Ruby gemspecs and version.rb
echo "  cli/ruby/proofmode.gemspec"
sed -i.bak "s/spec.version.*=.*\".*\"/spec.version       = \"$VERSION\"/" "$PROJECT_ROOT/cli/ruby/proofmode.gemspec"

echo "  ruby/proofmode.gemspec"
sed -i.bak "s/s.version.*=.*\".*\"/s.version     = \"$VERSION\"/" "$PROJECT_ROOT/ruby/proofmode.gemspec"

echo "  cli/ruby/lib/proofmode/version.rb"
sed -i.bak "s/VERSION = \".*\"/VERSION = \"$VERSION\"/" "$PROJECT_ROOT/cli/ruby/lib/proofmode/version.rb"

# Update Node.js package.json
echo "  cli/node/package.json"
sed -i.bak "s/\"version\": \".*\"/\"version\": \"$VERSION\"/" "$PROJECT_ROOT/cli/node/package.json"

# Update GitLab CI PACKAGE_VERSION
echo "  .gitlab-ci.yml"
sed -i.bak "s/PACKAGE_VERSION: \".*\"/PACKAGE_VERSION: \"$VERSION\"/" "$PROJECT_ROOT/.gitlab-ci.yml"

# Update Android build.gradle files
echo "  android-library/build.gradle"
sed -i.bak "s/versionName \".*\"/versionName \"$VERSION\"/" "$PROJECT_ROOT/android-library/build.gradle"

if [ -f "$PROJECT_ROOT/examples/android/app/build.gradle" ]; then
    echo "  examples/android/app/build.gradle"
    sed -i.bak "s/versionName \".*\"/versionName \"$VERSION\"/" "$PROJECT_ROOT/examples/android/app/build.gradle"
fi

# Clean up backup files
find "$PROJECT_ROOT" -name "*.bak" -type f -delete

echo ""
echo "Version updated to $VERSION"
echo ""
echo "Don't forget to:"
echo "1. Commit the changes"
echo "2. Create a git tag: git tag v$VERSION"
echo "3. Push: git push origin main v$VERSION"
