CARGO_TARGET_DIR ?= target
CARGO_TARGET ?= x86_64-unknown-linux-gnu
PKG_BASE_NAME ?= timer-${CARGO_TARGET}
PROJECT_VERSION := $(shell sed -n 's/^version = "\(.*\)"/\1/p' ./Cargo.toml | head -n1)
.DEFAULT: help
.PHONY: help
help:
@echo "Usage: make [TARGET ...]"
@echo ""
@@egrep -h "#[#]" $(MAKEFILE_LIST) | sed -e 's/\\$$//' | awk 'BEGIN {FS = "[:=].*?#[#] "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
@echo ""
.PHONY: build
build:
build:
cargo build --release
.PHONY: pre-commit-install
pre-commit-install:
pre-commit install
pre-commit install --hook-type commit-msg
.PHONY: pre-commit
pre-commit:
pre-commit run --all-files
.PHONY: fmt
fmt:
cargo fmt
.PHONY: fmt-check
fmt-check:
cargo fmt -- --check
.PHONY: clippy
clippy:
cargo clippy --all-targets --all-features -- -D warnings
.PHONY: clippy-fix
clippy-fix:
cargo clippy --all-targets --all-features --fix --allow-dirty -- -D warnings
.PHONY: lint
lint: fmt-check clippy
.PHONY: lint-fix
lint-fix: fmt clippy-fix
.PHONY: test
test:
test: lint
cargo test
.PHONY: update-changelog
update-changelog:
git cliff -t v$(PROJECT_VERSION) -u -p CHANGELOG.md
.PHONY: release
release:
cargo vendor
tar -czf vendor.tar.gz vendor
cargo build --frozen --release --all-features --target ${CARGO_TARGET}
tar -czf $(PKG_BASE_NAME).tar.gz -C $(CARGO_TARGET_DIR)/$(CARGO_TARGET)/release timer
@echo Released in $(CARGO_TARGET_DIR)/$(CARGO_TARGET)/release/timer
.PHONY: publish
publish:
cargo publish