#!/bin/sh
# Bump version in Cargo.toml and packaging files
# Usage: ./scripts/bump-version [patch|minor|major]

set -e

cd "$(dirname "$0")/.."

BUMP_TYPE="${1:-patch}"

# Get current version from Cargo.toml
CURRENT=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')

if [ -z "$CURRENT" ]; then
    echo "Error: Could not find version in Cargo.toml"
    exit 1
fi

# Parse version parts (POSIX compatible)
MAJOR=$(echo "$CURRENT" | cut -d. -f1)
MINOR=$(echo "$CURRENT" | cut -d. -f2)
PATCH=$(echo "$CURRENT" | cut -d. -f3)

# Bump the appropriate part
case "$BUMP_TYPE" in
    major)
        MAJOR=$((MAJOR + 1))
        MINOR=0
        PATCH=0
        ;;
    minor)
        MINOR=$((MINOR + 1))
        PATCH=0
        ;;
    patch)
        PATCH=$((PATCH + 1))
        ;;
    *)
        echo "Usage: $0 [patch|minor|major]"
        echo "  patch - 0.1.0 -> 0.1.1 (default)"
        echo "  minor - 0.1.0 -> 0.2.0"
        echo "  major - 0.1.0 -> 1.0.0"
        exit 1
        ;;
esac

NEW="${MAJOR}.${MINOR}.${PATCH}"

echo "Bumping version: $CURRENT -> $NEW"

# Update Cargo.toml
sed -i "s/^version = \"$CURRENT\"/version = \"$NEW\"/" Cargo.toml

# Update packaging files
sed -i "s/pkgver=$CURRENT/pkgver=$NEW/" packaging/arch/PKGBUILD
sed -i "s/^Version:.*$CURRENT/Version:        $NEW/" packaging/rpm/suspiro.spec

# Update debian changelog (add new entry)
DATE=$(date -R)
{
    printf "suspiro (%s-1) unstable; urgency=medium\n\n" "$NEW"
    printf "  * Version bump to %s.\n\n" "$NEW"
    printf " -- Jorge Cardona <jorge@cardona.co>  %s\n\n" "$DATE"
    cat packaging/debian/changelog
} > packaging/debian/changelog.new
mv packaging/debian/changelog.new packaging/debian/changelog

# Update Cargo.lock
cargo check --quiet 2>/dev/null || true

echo ""
echo "Updated files:"
echo "  - Cargo.toml"
echo "  - packaging/arch/PKGBUILD"
echo "  - packaging/rpm/suspiro.spec"
echo "  - packaging/debian/changelog"
echo ""
echo "Next steps:"
echo "  git add -A && git commit -m \"Bump version to $NEW\""
echo "  git tag v$NEW"
echo "  git push origin main --tags"
