-
Notifications
You must be signed in to change notification settings - Fork 560
Add helpful targets via Makefile #211
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
4552d64
416e80a
f0aa63d
062a0b4
3015b95
8c581a2
25ab60c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -8,3 +8,5 @@ cmd/registry/registry | |
| validate-examples | ||
| validate-schemas | ||
| .idea/ | ||
| coverage.out | ||
| coverage.html | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -83,6 +83,11 @@ linters: | |
| - return | ||
| nestif: | ||
| min-complexity: 8 | ||
| revive: | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. uncertain: Do we need this extra rule? I'm not super familiar with golangci-lint, so apologies if this is a dumb question! Overall I think I'd like us to reduce custom config and use whatever the common/popular presets are: makes onboarding to the repo easier and AI tools more likely to get things right. |
||
| rules: | ||
| - name: use-any | ||
| severity: error | ||
| disabled: false | ||
| exclusions: | ||
| generated: lax | ||
| presets: | ||
|
|
@@ -122,4 +127,4 @@ formatters: | |
| paths: | ||
| - third_party$ | ||
| - builtin$ | ||
| - examples$ | ||
| - examples$ | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| .PHONY: help build test test-unit test-integration test-endpoints test-publish test-all lint lint-fix validate validate-schemas validate-examples check dev-local dev-compose clean publisher | ||
|
|
||
| # Default target | ||
| help: ## Show this help message | ||
| @echo "Available targets:" | ||
| @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " %-20s %s\n", $$1, $$2}' | ||
|
|
||
| # Build targets | ||
| build: ## Build the registry application | ||
| go build ./cmd/registry | ||
|
|
||
| publisher: ## Build the publisher tool | ||
| cd tools/publisher && ./build.sh | ||
|
|
||
| # Test targets | ||
| test-unit: ## Run unit tests with coverage | ||
| go test -v -race -coverprofile=coverage.out -covermode=atomic ./internal/... | ||
| go tool cover -html=coverage.out -o coverage.html | ||
| @echo "Coverage report generated: coverage.html" | ||
|
|
||
| test: ## Run unit tests (use 'make test-all' to run all tests) | ||
| @echo "⚠️ Running unit tests only. Use 'make test-all' to run both unit and integration tests." | ||
| @$(MAKE) test-unit | ||
|
|
||
| test-integration: ## Run integration tests | ||
| ./tests/integration/run.sh | ||
|
|
||
| test-endpoints: ## Test API endpoints (requires running server) | ||
| ./scripts/test_endpoints.sh | ||
|
|
||
| test-publish: ## Test publish endpoint (requires BEARER_TOKEN env var) | ||
| ./scripts/test_publish.sh | ||
|
|
||
| test-all: test-unit test-integration ## Run all tests (unit and integration) | ||
|
|
||
| # Validation targets | ||
| validate-schemas: ## Validate JSON schemas | ||
| ./tools/validate-schemas.sh | ||
|
|
||
| validate-examples: ## Validate examples against schemas | ||
| ./tools/validate-examples.sh | ||
|
|
||
| validate: validate-schemas validate-examples ## Run all validation checks | ||
|
|
||
| # Lint targets | ||
| lint: ## Run linter (includes formatting) | ||
| golangci-lint run --timeout=5m | ||
|
|
||
| lint-fix: ## Run linter with auto-fix (includes formatting) | ||
| golangci-lint run --fix --timeout=5m | ||
|
|
||
| # Combined targets | ||
| check: lint validate test-all ## Run all checks (lint, validate, unit tests) | ||
| @echo "All checks passed!" | ||
|
|
||
| # Development targets | ||
| dev-compose: ## Start development environment with Docker Compose (builds image automatically) | ||
| docker compose up --build | ||
|
|
||
| dev-local: ## Run registry locally (requires MongoDB) | ||
| go run cmd/registry/main.go | ||
|
|
||
| # Cleanup | ||
| clean: ## Clean build artifacts and coverage files | ||
| rm -f registry | ||
| rm -f coverage.out coverage.html | ||
| cd tools/publisher && rm -f publisher | ||
|
|
||
|
|
||
| .DEFAULT_GOAL := help |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
😍
(in line with my 'prefer using
makecommands locally and in CI to keep them in sync')