79 lines
1.7 KiB
Makefile
79 lines
1.7 KiB
Makefile
BINARY := gis
|
|
PKG := ./cmd/gis
|
|
BIN_DIR := bin
|
|
COMPOSE := docker compose -f deployments/docker-compose.yml
|
|
|
|
.DEFAULT_GOAL := help
|
|
|
|
.PHONY: help
|
|
help: ## Show this help
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
|
|
awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-16s\033[0m %s\n", $$1, $$2}'
|
|
|
|
.PHONY: build
|
|
build: ## Build the binary into ./bin
|
|
go build -o $(BIN_DIR)/$(BINARY) $(PKG)
|
|
|
|
.PHONY: run
|
|
run: ## Run the HTTP server
|
|
go run $(PKG) serve
|
|
|
|
.PHONY: worker
|
|
worker: ## Run the RabbitMQ worker
|
|
go run $(PKG) worker
|
|
|
|
.PHONY: test
|
|
test: ## Run unit tests
|
|
go test ./...
|
|
|
|
.PHONY: cover
|
|
cover: ## Run tests with coverage summary
|
|
go test -cover ./...
|
|
|
|
.PHONY: vet
|
|
vet: ## Run go vet
|
|
go vet ./...
|
|
|
|
.PHONY: fmt
|
|
fmt: ## Format the code
|
|
gofmt -w cmd internal pkg
|
|
|
|
.PHONY: lint
|
|
lint: ## Run golangci-lint (requires golangci-lint installed)
|
|
golangci-lint run
|
|
|
|
.PHONY: docs
|
|
docs: ## Regenerate the OpenAPI (Swagger) spec from swag annotations
|
|
go tool swag init -g cmd/gis/main.go --parseInternal --output docs
|
|
|
|
.PHONY: tidy
|
|
tidy: ## Tidy go.mod / go.sum
|
|
go mod tidy
|
|
|
|
.PHONY: check
|
|
check: vet test ## Run vet and tests
|
|
|
|
.PHONY: migrate-up
|
|
migrate-up: ## Apply all migrations
|
|
go run $(PKG) migrate up
|
|
|
|
.PHONY: migrate-fresh
|
|
migrate-fresh: ## Drop the schema and re-apply all migrations
|
|
go run $(PKG) migrate fresh
|
|
|
|
.PHONY: migrate-status
|
|
migrate-status: ## Show migration status
|
|
go run $(PKG) migrate status
|
|
|
|
.PHONY: up
|
|
up: ## Start infrastructure (postgres, minio, rabbitmq)
|
|
$(COMPOSE) up -d postgres minio rabbitmq
|
|
|
|
.PHONY: down
|
|
down: ## Stop infrastructure
|
|
$(COMPOSE) down
|
|
|
|
.PHONY: docker-build
|
|
docker-build: ## Build the application image
|
|
docker build -f build/package/Dockerfile -t $(BINARY):latest .
|