76 lines
2.2 KiB
Makefile
76 lines
2.2 KiB
Makefile
# Storage engine playground helpers.
|
|
|
|
HAS_CARGO := $(wildcard Cargo.toml)
|
|
|
|
# Workspace crates discovered under `crates/*/Cargo.toml`. The directory name is
|
|
# assumed to match the package name (the convention documented in crates/README.md).
|
|
CRATE_MANIFESTS := $(wildcard crates/*/Cargo.toml)
|
|
CRATES := $(patsubst crates/%/Cargo.toml,%,$(CRATE_MANIFESTS))
|
|
CRATE_FLAGS := $(addprefix -p ,$(CRATES))
|
|
|
|
.DEFAULT_GOAL := help
|
|
|
|
.PHONY: help
|
|
help: ## Show help messages for all available targets
|
|
@grep -E '^[a-zA-Z_-]+:.*## .*$$' Makefile | \
|
|
awk 'BEGIN {FS = ":.*## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
|
|
|
.PHONY: format
|
|
format: ## Apply code formatting
|
|
@if [ -z "$(HAS_CARGO)" ]; then \
|
|
echo "No Cargo.toml found. Skipping Rust formatting."; \
|
|
else \
|
|
cargo fmt --all; \
|
|
fi
|
|
|
|
.PHONY: format-check
|
|
format-check: ## Check code formatting without applying changes
|
|
@if [ -z "$(HAS_CARGO)" ]; then \
|
|
echo "No Cargo.toml found. Skipping Rust format check."; \
|
|
else \
|
|
cargo fmt --all --check; \
|
|
fi
|
|
|
|
.PHONY: lint
|
|
lint: ## Run linters across every crate under crates/
|
|
@if [ -z "$(HAS_CARGO)" ]; then \
|
|
echo "No Cargo.toml found. Skipping lint."; \
|
|
elif [ -z "$(CRATES)" ]; then \
|
|
echo "No crates/*/Cargo.toml found. Skipping lint."; \
|
|
else \
|
|
cargo clippy $(CRATE_FLAGS) --no-deps -- -D warnings -D clippy::unwrap_used -D clippy::expect_used; \
|
|
fi
|
|
|
|
.PHONY: test
|
|
test: ## Run tests across all targets and features
|
|
@if [ -z "$(HAS_CARGO)" ]; then \
|
|
echo "No Cargo.toml found. Skipping tests."; \
|
|
else \
|
|
cargo test --all-targets --all-features; \
|
|
fi
|
|
|
|
.PHONY: check
|
|
check: format-check lint test ## Run all checks (format-check, lint, test)
|
|
|
|
.PHONY: clean
|
|
clean: ## Remove build output
|
|
@if [ -z "$(HAS_CARGO)" ]; then \
|
|
echo "No Cargo.toml found. Nothing to clean."; \
|
|
else \
|
|
cargo clean; \
|
|
fi
|
|
|
|
.PHONY: shell
|
|
shell: ## Enter the Nix dev shell defined in flake.nix
|
|
@nix develop
|
|
|
|
.PHONY: setup-hooks
|
|
setup-hooks: ## Install Git hooks with pre-commit
|
|
@pre-commit install --hook-type pre-commit
|
|
@pre-commit install --hook-type pre-push
|
|
@pre-commit install-hooks
|
|
|
|
.PHONY: test-hooks
|
|
test-hooks: ## Run pre-commit hooks across all files
|
|
@pre-commit run --all-files --show-diff-on-failure
|