.DEFAULT_GOAL := help
CARGO := cargo
RUSTUP := rustup
GREEN := \033[0;32m
YELLOW := \033[0;33m
RED := \033[0;31m
NC := \033[0m
.PHONY: help
help:
@echo "Available targets:"
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " $(YELLOW)%-15s$(NC) %s\n", $$1, $$2}'
.PHONY: build
build:
@echo "$(GREEN)Building main TUI project...$(NC)"
$(CARGO) build
.PHONY: build-all
build-all:
@echo "$(GREEN)Building all workspace members...$(NC)"
$(CARGO) build --workspace
.PHONY: run-tui
run-tui:
@echo "$(GREEN)Running TUI version...$(NC)"
$(CARGO) run
.PHONY: run-native
run-native:
@echo "$(GREEN)Running native egui version...$(NC)"
cd web-poc && $(CARGO) run --bin mathypad-web-poc
.PHONY: run-web
run-web:
@echo "$(GREEN)Building and serving web version...$(NC)"
cd web-poc && ./run-web.sh
.PHONY: build-web
build-web:
@echo "$(GREEN)Building web WASM version...$(NC)"
cd web-poc && ./build-web.sh
.PHONY: serve-web
serve-web:
@echo "$(GREEN)Serving web version on http://localhost:8080...$(NC)"
cd web-poc && python3 -m http.server 8080
.PHONY: check
check:
@echo "$(GREEN)Checking main project...$(NC)"
$(CARGO) check
.PHONY: check-all
check-all:
@echo "$(GREEN)Checking all workspace members...$(NC)"
$(CARGO) check --workspace
.PHONY: test
test:
@echo "$(GREEN)Running tests for main project...$(NC)"
$(CARGO) test
.PHONY: test-all
test-all:
@echo "$(GREEN)Running tests for all workspace members...$(NC)"
$(CARGO) test --workspace
.PHONY: fmt
fmt:
@echo "$(GREEN)Formatting code for all workspace members...$(NC)"
$(CARGO) fmt --all
.PHONY: fmt-check
fmt-check:
@echo "$(GREEN)Checking code formatting for all workspace members...$(NC)"
$(CARGO) fmt --all -- --check
.PHONY: clippy
clippy:
@echo "$(GREEN)Running clippy on main project...$(NC)"
$(CARGO) clippy --all-targets --all-features -- -D warnings
.PHONY: clippy-all
clippy-all:
@echo "$(GREEN)Running clippy on all workspace members...$(NC)"
$(CARGO) clippy --workspace --all-targets --all-features -- -D warnings
.PHONY: clippy-pedantic
clippy-pedantic:
@echo "$(GREEN)Running clippy with pedantic lints...$(NC)"
$(CARGO) clippy -- -W clippy::pedantic -D warnings
.PHONY: doc
doc:
@echo "$(GREEN)Generating documentation...$(NC)"
$(CARGO) doc
.PHONY: doc-open
doc-open:
@echo "$(GREEN)Generating and opening documentation...$(NC)"
$(CARGO) doc --open
.PHONY: update
update:
@echo "$(GREEN)Updating dependencies...$(NC)"
$(CARGO) update
.PHONY: all
all: build-all test-all clippy-all fmt doc
.PHONY: clean
clean:
@echo "$(GREEN)Cleaning build artifacts...$(NC)"
$(CARGO) clean