#!/usr/bin/env bash
# bump-version <new-version>
# Updates the version in pyproject.toml and packages/protocol-ts/package.json atomically.
#
# Usage:
#   scripts/bump-version 0.2.0
#   scripts/bump-version 1.0.0-rc.1
#
# After running, commit and tag:
#   git add pyproject.toml packages/protocol-ts/package.json
#   git commit -m "chore: release v<new-version>"
#   git tag v<new-version>
#   git push origin v2 --tags

set -euo pipefail

NEW_VERSION="${1:-}"
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"

if [[ -z "$NEW_VERSION" ]]; then
  echo "Usage: scripts/bump-version <new-version>"
  echo "Example: scripts/bump-version 0.2.0"
  exit 1
fi

# Validate semver-ish (e.g. 1.2.3 or 1.2.3-rc.1)
if ! [[ "$NEW_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+([-+].+)?$ ]]; then
  echo "Error: '$NEW_VERSION' does not look like a valid semver (x.y.z)"
  exit 1
fi

PYPROJECT="$REPO_ROOT/pyproject.toml"
PACKAGE_JSON="$REPO_ROOT/packages/protocol-ts/package.json"

# --- pyproject.toml ---
CURRENT_PY=$(grep -m1 '^version = ' "$PYPROJECT" | sed 's/version = "\(.*\)"/\1/')
sed -i "s/^version = \"$CURRENT_PY\"/version = \"$NEW_VERSION\"/" "$PYPROJECT"
echo "pyproject.toml:                     $CURRENT_PY → $NEW_VERSION"

# --- package.json ---
# Update only the top-level "version" field (first occurrence)
CURRENT_NPM=$(grep -m1 '"version"' "$PACKAGE_JSON" | sed 's/.*"version": "\(.*\)".*/\1/')
sed -i "0,/\"version\": \"$CURRENT_NPM\"/s/\"version\": \"$CURRENT_NPM\"/\"version\": \"$NEW_VERSION\"/" "$PACKAGE_JSON"
echo "packages/protocol-ts/package.json:  $CURRENT_NPM → $NEW_VERSION"

echo ""
echo "Done. Next steps:"
echo "  git add pyproject.toml packages/protocol-ts/package.json"
echo "  git commit -m \"chore: release v$NEW_VERSION\""
echo "  git tag v$NEW_VERSION"
echo "  git push origin v2 --tags"
