# Copyright 2026 Paul Barker <paul@pbarker.dev>
# SPDX-License-Identifier: Apache-2.0

project := "gpxtidy"

[private]
confirm-clean:
    git diff --quiet && git diff --cached --quiet || \
        { echo "There are uncommitted changes!" >&2; exit 1; }

[private]
confirm-on-branch branch:
    test "$(git branch --show-current)" = "{{branch}}" || \
        { echo "Not on branch {{branch}}!" >&2; exit 1; }

release version: confirm-clean (confirm-on-branch "main")
    sed -i '0,/^version = ".*"/s//version = "{{version}}"/' Cargo.toml
    sed -i "s/^## Unreleased$/## v{{version}} — $(date +%Y-%m-%d)/" ChangeLog.md
    cargo check --quiet

    git commit -a --allow-empty -m "Prepare for v{{version}} release"
    { echo "{{project}} v{{version}}"; markdown-extract -n "v{{version}}" ChangeLog.md; } | \
        git tag -a "v{{version}}" -F- HEAD

    @echo ""
    git show "v{{version}}"
    just publish "{{version}}"

[confirm]
publish version:
    git archive --format=tar "v{{version}}" | zstd -9 > "{{project}}-{{version}}.tar.zst"
    git push origin main
    git push origin "v{{version}}"
    cargo publish

build:
    cargo build

test:
    pre-commit run -a
    cargo test
