92 lines
2.0 KiB
Makefile
92 lines
2.0 KiB
Makefile
.PHONY: build release test clean install fmt lint check doc
|
|
|
|
# Default target
|
|
all: build
|
|
|
|
# Build debug version
|
|
build:
|
|
cargo build
|
|
|
|
# Build release version
|
|
release:
|
|
cargo build --release
|
|
|
|
# Run tests
|
|
test:
|
|
cargo test
|
|
|
|
# Run integration tests
|
|
test-integration:
|
|
cargo test --test integration_tests
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
cargo clean
|
|
|
|
# Install locally (requires cargo-install)
|
|
install:
|
|
cargo install --path .
|
|
|
|
# Format code
|
|
fmt:
|
|
cargo fmt
|
|
|
|
# Check formatting
|
|
check-fmt:
|
|
cargo fmt -- --check
|
|
|
|
# Run clippy linter
|
|
lint:
|
|
cargo clippy -- -D warnings
|
|
|
|
# Run all checks
|
|
check: check-fmt lint test
|
|
|
|
# Generate documentation
|
|
doc:
|
|
cargo doc --no-deps --open
|
|
|
|
# Run with debug logging
|
|
debug:
|
|
RUST_LOG=debug cargo run -- $(ARGS)
|
|
|
|
# Build and run
|
|
run: build
|
|
./target/debug/quicommit $(ARGS)
|
|
|
|
# Build release and run
|
|
run-release: release
|
|
./target/release/quicommit $(ARGS)
|
|
|
|
# Generate shell completions
|
|
completions: release
|
|
mkdir -p completions
|
|
./target/release/quicommit completions bash > completions/quicommit.bash
|
|
./target/release/quicommit completions zsh > completions/_quicommit
|
|
./target/release/quicommit completions fish > completions/quicommit.fish
|
|
./target/release/quicommit completions powershell > completions/_quicommit.ps1
|
|
|
|
# Development helpers
|
|
dev-setup:
|
|
rustup component add rustfmt clippy
|
|
|
|
# CI pipeline
|
|
ci: check-fmt lint test
|
|
@echo "All CI checks passed!"
|
|
|
|
# Help
|
|
help:
|
|
@echo "Available targets:"
|
|
@echo " build - Build debug version"
|
|
@echo " release - Build release version"
|
|
@echo " test - Run all tests"
|
|
@echo " clean - Clean build artifacts"
|
|
@echo " install - Install locally"
|
|
@echo " fmt - Format code"
|
|
@echo " lint - Run clippy linter"
|
|
@echo " check - Run all checks (fmt, lint, test)"
|
|
@echo " doc - Generate documentation"
|
|
@echo " run - Build and run (use ARGS='...' for arguments)"
|
|
@echo " completions - Generate shell completions"
|
|
@echo " ci - Run CI pipeline"
|