.PHONY: help test test-unit test-integration test-all coverage bench fmt lint clean docs build release
RED := \033[0;31m
GREEN := \033[0;32m
YELLOW := \033[0;33m
NC := \033[0m
help:
@echo "$(GREEN)ClickUp v2 Rust Crate - Comandos disponíveis:$(NC)"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "$(YELLOW)%-20s$(NC) %s\n", $$1, $$2}'
test:
@echo "$(GREEN)Executando todos os testes...$(NC)"
@export CLICKUP_CLIENT_ID=test_client_id && \
export CLICKUP_CLIENT_SECRET=test_client_secret && \
cargo test --verbose
test-unit:
@echo "$(GREEN)Executando testes unitários...$(NC)"
@export CLICKUP_CLIENT_ID=test_client_id && \
export CLICKUP_CLIENT_SECRET=test_client_secret && \
cargo test --lib --verbose
test-integration:
@echo "$(GREEN)Executando testes de integração...$(NC)"
@export CLICKUP_CLIENT_ID=test_client_id && \
export CLICKUP_CLIENT_SECRET=test_client_secret && \
cargo test --test '*' --verbose
test-doc:
@echo "$(GREEN)Executando testes de documentação...$(NC)"
@export CLICKUP_CLIENT_ID=test_client_id && \
export CLICKUP_CLIENT_SECRET=test_client_secret && \
cargo test --doc --verbose
test-all: test test-doc
coverage:
@echo "$(GREEN)Gerando relatório de cobertura...$(NC)"
@export CLICKUP_CLIENT_ID=test_client_id && \
export CLICKUP_CLIENT_SECRET=test_client_secret && \
cargo tarpaulin --verbose --all-features --workspace --timeout 120 --out Html --output-dir ./coverage
coverage-open: coverage
@echo "$(GREEN)Abrindo relatório de cobertura...$(NC)"
@open ./coverage/tarpaulin-report.html || xdg-open ./coverage/tarpaulin-report.html
bench:
@echo "$(GREEN)Executando benchmarks...$(NC)"
@export CLICKUP_CLIENT_ID=test_client_id && \
export CLICKUP_CLIENT_SECRET=test_client_secret && \
cargo bench --verbose
bench-save:
@echo "$(GREEN)Executando benchmarks e salvando baseline...$(NC)"
@export CLICKUP_CLIENT_ID=test_client_id && \
export CLICKUP_CLIENT_SECRET=test_client_secret && \
cargo bench --verbose -- --save-baseline main
bench-compare:
@echo "$(GREEN)Comparando benchmarks com baseline...$(NC)"
@export CLICKUP_CLIENT_ID=test_client_id && \
export CLICKUP_CLIENT_SECRET=test_client_secret && \
cargo bench --verbose -- --baseline main
fmt:
@echo "$(GREEN)Formatando código...$(NC)"
@cargo fmt
fmt-check:
@echo "$(GREEN)Verificando formatação...$(NC)"
@cargo fmt -- --check
lint:
@echo "$(GREEN)Executando análise estática com clippy...$(NC)"
@cargo clippy -- -D warnings
lint-fix:
@echo "$(GREEN)Aplicando correções do clippy...$(NC)"
@cargo clippy --fix -- -D warnings
clean:
@echo "$(GREEN)Limpando arquivos de build...$(NC)"
@cargo clean
@rm -rf coverage/
@rm -rf target/
docs:
@echo "$(GREEN)Gerando documentação...$(NC)"
@cargo doc --no-deps --open
docs-all:
@echo "$(GREEN)Gerando documentação completa...$(NC)"
@cargo doc --open
build:
@echo "$(GREEN)Compilando projeto...$(NC)"
@cargo build --verbose
build-release:
@echo "$(GREEN)Compilando em modo release...$(NC)"
@cargo build --release --verbose
release: test lint fmt-check
@echo "$(GREEN)Projeto pronto para release!$(NC)"
check:
@echo "$(GREEN)Verificando compilação...$(NC)"
@cargo check --all-targets --all-features
watch:
@echo "$(GREEN)Observando mudanças...$(NC)"
@cargo watch -x test
install-tools:
@echo "$(GREEN)Instalando ferramentas de desenvolvimento...$(NC)"
@cargo install cargo-tarpaulin || true
@cargo install cargo-watch || true
@cargo install cargo-edit || true
@cargo install cargo-outdated || true
outdated:
@echo "$(GREEN)Verificando dependências desatualizadas...$(NC)"
@cargo outdated
update:
@echo "$(GREEN)Atualizando dependências...$(NC)"
@cargo update
audit:
@echo "$(GREEN)Verificando vulnerabilidades...$(NC)"
@cargo audit
test-env:
@echo "$(GREEN)Criando arquivo .env de teste...$(NC)"
@echo "CLICKUP_CLIENT_ID=test_client_id" > .env.test
@echo "CLICKUP_CLIENT_SECRET=test_client_secret" >> .env.test
@echo "CLICKUP_REDIRECT_URI=http://localhost:8888/callback" >> .env.test
@echo "$(YELLOW)Arquivo .env.test criado!$(NC)"
pre-commit: fmt lint test
@echo "$(GREEN)Todas as verificações passaram!$(NC)"
ci: test-all lint fmt-check
@echo "$(GREEN)Pipeline CI executado com sucesso!$(NC)"
dev-setup: install-tools test-env
@echo "$(GREEN)Ambiente de desenvolvimento configurado!$(NC)"
all: build test lint