default: run

run:
	cargo run

run-release:
	cargo run --release

format:
	cargo fmt --all

format-check:
	cargo fmt --check --all

audit:
	cargo deny check

build:
	cargo build

build-release:
	cargo build --release

lint:
	cargo clippy --all-targets --features test-utils

lint-report:
	cargo clippy --all-targets --features test-utils --message-format=json > coverage/clippy.json 2> /dev/null

test:
	cargo test --features test-utils

fast-test:
	cargo nextest run --all --all-features

coverage:
	mkdir -p coverage
	cargo tarpaulin --config .tarpaulin.local.toml --features test-utils

coverage-ci:
	mkdir -p coverage
	cargo tarpaulin --config .tarpaulin.ci.toml --features test-utils

check-all: format-check lint fast-test audit

cliff-count:
	git-cliff --unreleased | tail -n +3 | wc -l

cliff-next-version:
	git-cliff --bumped-version

cliff-bump:
	git-cliff --bump -o CHANGELOG.md

commit-release version:
	cargo set-version "{{version}}"
	git config user.name "CI Bot"
	git config user.email "ci@phundrak.com"
	git add Cargo.toml Cargo.lock CHANGELOG.md
	git commit -m "chore(release): release {{version}} [skip ci]"
	git push origin main

create-release-tag version:
	git tag "{{version}}"
	git push origin "{{version}}"

rebase-develop:
	git fetch origin
	git checkout develop
	git rebase origin/main

update-develop-version version:
	#!/usr/bin/env bash
	NEXT_DEV=$(echo "{{version}}" | awk -F. '{print $1"."$2"."$3+1}')"-dev"
	cargo set-version "$NEXT_DEV"
	git add Cargo.toml Cargo.lock
	git commit -m "chore(release): bump version to $NEXT_DEV [skip ci]"
	git push origin develop

## Local Variables:
## mode: makefile
## End:
