meteologica/Makefile

62 lines
2.1 KiB
Makefile

SERVICE_A := ./service_a
SERVICE_B := ./service_b
PG_VERSION := 17.6-alpine3.22
DB_NAME := meteologica
.PHONY: dockerize-db
# Remove and create a development database.
dockerize-db:
docker rm -f $(DB_NAME)
docker run --name $(DB_NAME) -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=developer -e POSTGRES_DB=$(DB_NAME) -p 5432:5432 -d postgres:$(PG_VERSION)
@echo "waiting for db to be ready"
@until docker exec $(DB_NAME) pg_isready -U developer -d $(DB_NAME) > /dev/null 2>&1; do sleep 1; done
@echo "db is ready"
make migrateup
.PHONY: migrateup
# Migrate all schemas, triggers and data located in database/migrations.
migrateup:
go run -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest -path $(SERVICE_A)/server/database/migrations -database "postgresql://developer:secret@localhost:5432/$(DB_NAME)?sslmode=disable" -verbose up
.PHONY: run
# Run all services
run:
cd $(SERVICE_A) && go run ./server/main.go & cd $(SERVICE_B) && go run ./server/main.go
.PHONY: run-a
# Run service_a only
run-a:
cd $(SERVICE_A) && go run ./server/main.go
.PHONY: run-b
# Run service_b only
run-b:
cd $(SERVICE_B) && go run ./server/main.go
.PHONY: test
# Run all tests with coverage
test:
@echo "Running tests for service_a..."
cd $(SERVICE_A) && go test ./... -coverprofile=../service_a_coverage.out
@echo "Running tests for service_b..."
cd $(SERVICE_B) && go test ./... -coverprofile=../service_b_coverage.out
@echo "\nCoverage reports generated:"
@echo " - service_a_coverage.out"
@echo " - service_b_coverage.out"
.PHONY: coverage
# View coverage reports in browser
coverage:
@echo "Opening service_a coverage report..."
cd $(SERVICE_A) && go tool cover -html=../service_a_coverage.out
@echo "Opening service_b coverage report..."
cd $(SERVICE_B) && go tool cover -html=../service_b_coverage.out
.PHONY: coverage-func
# Show coverage summary in terminal
coverage-func:
@echo "Service A Coverage:"
cd $(SERVICE_A) && go tool cover -func=../service_a_coverage.out
@echo "\nService B Coverage:"
cd $(SERVICE_B) && go tool cover -func=../service_b_coverage.out