142 lines · 4.2 KB · Makefile
RawDownload
# Azul Browse - Build Automation# Usage: make <target> .PHONY: all build release install uninstall test lint fmt check clean help version bump-patch bump-minor bump-major tag # ConfigurationBINARY_NAME := azulINSTALL_PATH := /usr/local/binVERSION := $(shell grep '^version' Cargo.toml | head -1 | cut -d'"' -f2) # Default targetall: build # ============================================================================# Development# ============================================================================ ## build: Build debug binarybuild:	cargo build ## release: Build optimized release binaryrelease:	cargo build --release ## run: Run the applicationrun:	cargo run ## run-release: Run the release buildrun-release:	cargo run --release ## test: Run all teststest:	cargo test --all-features ## lint: Run clippy linterlint:	cargo clippy --all-targets --all-features -- -D warnings ## fmt: Format codefmt:	cargo fmt ## fmt-check: Check code formattingfmt-check:	cargo fmt --all -- --check ## check: Run all checks (fmt, lint, test)check: fmt-check lint test	@echo "✓ All checks passed!" ## clean: Clean build artifactsclean:	cargo clean # ============================================================================# Installation# ============================================================================ ## install: Build and install to system (requires sudo)install: release	@echo "Installing $(BINARY_NAME) to $(INSTALL_PATH)..."	sudo cp target/release/$(BINARY_NAME) $(INSTALL_PATH)/$(BINARY_NAME)	@echo "✓ Installed $(BINARY_NAME) v$(VERSION)" ## install-user: Install to ~/.local/bin (no sudo)install-user: release	@mkdir -p ~/.local/bin	cp target/release/$(BINARY_NAME) ~/.local/bin/$(BINARY_NAME)	@echo "✓ Installed $(BINARY_NAME) v$(VERSION) to ~/.local/bin"	@echo "  Make sure ~/.local/bin is in your PATH" ## uninstall: Remove from systemuninstall:	sudo rm -f $(INSTALL_PATH)/$(BINARY_NAME)	@echo "✓ Uninstalled $(BINARY_NAME)" ## cargo-install: Install via cargocargo-install:	cargo install --path . # ============================================================================# Versioning & Release# ============================================================================ ## version: Show current versionversion:	@echo "$(VERSION)" ## bump-patch: Bump patch version (0.0.X -> 0.0.X+1)bump-patch:	@NEW_VERSION=$$(echo $(VERSION) | awk -F. '{print $$1"."$$2"."$$3+1}'); \	sed -i 's/^version = "$(VERSION)"/version = "'$$NEW_VERSION'"/' Cargo.toml; \	echo "Bumped version: $(VERSION) -> $$NEW_VERSION" ## bump-minor: Bump minor version (0.X.0 -> 0.X+1.0)bump-minor:	@NEW_VERSION=$$(echo $(VERSION) | awk -F. '{print $$1"."$$2+1".0"}'); \	sed -i 's/^version = "$(VERSION)"/version = "'$$NEW_VERSION'"/' Cargo.toml; \	echo "Bumped version: $(VERSION) -> $$NEW_VERSION" ## bump-major: Bump major version (X.0.0 -> X+1.0.0)bump-major:	@NEW_VERSION=$$(echo $(VERSION) | awk -F. '{print $$1+1".0.0"}'); \	sed -i 's/^version = "$(VERSION)"/version = "'$$NEW_VERSION'"/' Cargo.toml; \	echo "Bumped version: $(VERSION) -> $$NEW_VERSION" ## tag: Create a git tag for current versiontag:	@echo "Creating tag v$(VERSION)..."	git tag -a "v$(VERSION)" -m "Release v$(VERSION)"	@echo "✓ Created tag v$(VERSION)"	@echo "  Push with: git push origin v$(VERSION)" ## release-tag: Create and push release tag (triggers GitHub release)release-tag: tag	git push origin "v$(VERSION)"	@echo "✓ Pushed tag v$(VERSION) - GitHub Actions will create the release" # ============================================================================# Help# ============================================================================ ## help: Show this help messagehelp:	@echo "Azul Browse v$(VERSION) - Build Commands"	@echo ""	@echo "Usage: make <target>"	@echo ""	@echo "Development:"	@grep -E '^## ' $(MAKEFILE_LIST) | grep -E '(build|release|run|test|lint|fmt|check|clean):' | \		sed 's/## /  /' | sed 's/: /\t/'	@echo ""	@echo "Installation:"	@grep -E '^## ' $(MAKEFILE_LIST) | grep -E '(install|uninstall|cargo):' | \		sed 's/## /  /' | sed 's/: /\t/'	@echo ""	@echo "Versioning:"	@grep -E '^## ' $(MAKEFILE_LIST) | grep -E '(version|bump|tag):' | \		sed 's/## /  /' | sed 's/: /\t/'