# Public PyPI stub for the multibase name. Set UV_PUBLISH_TOKEN before publish.

build:
    rm -rf dist
    uv build

# Public PyPI. Set UV_PUBLISH_TOKEN first (pypi-... token from pypi.org).
publish: build
    uv publish dist/*

# TestPyPI dry run. Set UV_PUBLISH_TOKEN to a test.pypi.org token.
publish-test: build
    uv publish --publish-url https://test.pypi.org/legacy/ dist/*

version:
    @grep -E '^__version__' multibase/__init__.py | cut -d'"' -f2

# Bump version in __init__.py + pyproject.toml (patch|minor|major), no publish.
bump part="patch":
    #!/usr/bin/env bash
    set -euo pipefail
    cur=$(grep -E '^__version__' multibase/__init__.py | cut -d'"' -f2)
    IFS=. read -r major minor patch <<< "$cur"
    case "{{ part }}" in
        major) major=$((major+1)); minor=0; patch=0 ;;
        minor) minor=$((minor+1)); patch=0 ;;
        patch) patch=$((patch+1)) ;;
        *) echo "unknown part '{{ part }}' (use patch|minor|major)" >&2; exit 1 ;;
    esac
    new="$major.$minor.$patch"
    rewrite() { sed -E "$1" "$2" > "$2.tmp" && mv "$2.tmp" "$2"; }
    rewrite "s/^(__version__ = \")[^\"]+(\")/\1$new\2/" multibase/__init__.py
    rewrite "1,/^version = / s/^(version = \")[^\"]+(\")/\1$new\2/" pyproject.toml
    echo "→ bumped $cur → $new (__init__.py, pyproject.toml)"

release part="patch":
    #!/usr/bin/env bash
    set -euo pipefail
    just bump {{ part }}
    version=$(just version)
    echo "→ releasing multibase v$version"
    just publish
    echo "✓ published"
