dukcapil/Makefile
Aditya Siregar bc64eb20ea add dukcapil
2026-05-07 04:01:32 +07:00

115 lines
2.3 KiB
Makefile

# Go Backend Template Makefile
# Database configuration (update these for your project)
DB_USERNAME := postgres
DB_PASSWORD := postgres
DB_HOST := localhost
DB_PORT := 5432
DB_NAME := template_db
DB_URL = postgres://$(DB_USERNAME):$(DB_PASSWORD)@$(DB_HOST):$(DB_PORT)/$(DB_NAME)?sslmode=disable
ifeq ($(OS),Windows_NT)
DETECTED_OS := Windows
else
DETECTED_OS := $(shell sh -c 'uname 2>/dev/null || echo Unknown')
endif
.SILENT: help
help:
@echo
@echo "Usage: make [command]"
@echo
@echo "Commands:"
@echo " build Build the application"
@echo " run Run the application"
@echo " test Run unit tests"
@echo " fmt Format source code"
@echo
@echo " migration-create name={name} Create a new migration"
@echo " migration-up Run all pending migrations"
@echo " migration-down Rollback last migration"
@echo
@echo " docker-up Start docker services"
@echo " docker-down Stop docker services"
@echo
# Build
.SILENT: build
build:
@go build -o ./bin/server ./cmd/server/main.go
@echo "✓ Binary built: ./bin/server"
# Run
.SILENT: run
run:
@ENV_MODE=development go run cmd/server/main.go
# Test
.SILENT: test
test:
@go test ./... -v
# Format
.SILENT: fmt
fmt:
@go fmt ./...
@echo "✓ Code formatted"
# Migrations
.SILENT: migration-create
migration-create:
@if [ -z "$(name)" ]; then \
echo "Error: name parameter is required"; \
echo "Usage: make migration-create name=your_migration_name"; \
exit 1; \
fi
@migrate create -ext sql -dir ./migrations -seq $(name)
@echo "✓ Migration created: $(name)"
.SILENT: migration-up
migration-up:
@migrate -database $(DB_URL) -path ./migrations up
@echo "✓ Migrations applied"
.SILENT: migration-down
migration-down:
@migrate -database $(DB_URL) -path ./migrations down 1
@echo "✓ Last migration rolled back"
# Docker
.SILENT: docker-up
docker-up:
@docker-compose up -d
@echo "✓ Docker services started"
.SILENT: docker-down
docker-down:
@docker-compose down
@echo "✓ Docker services stopped"
# Dependencies
.SILENT: deps
deps:
@go mod download
@go mod tidy
@echo "✓ Dependencies updated"
# Clean
.SILENT: clean
clean:
@rm -rf ./bin
@echo "✓ Build artifacts cleaned"
# Default
.DEFAULT_GOAL := help