NAME ?= $(shell basename "$(CURDIR)") GIT_COMMIT ?= $(shell git rev-parse --short HEAD) SOURCE_FILES = $(shell find $(CURDIR) -type f -name '*.go') PACKAGES = $(shell go list ./...) EFFECTIVE_LD_FLAGS ?= "-X main.GitCommit=$(GIT_COMMIT) $(LD_FLAGS)" default: help bin: bin/$(NAME) ## Build binary bin/$(NAME): $(SOURCE_FILES) go build -o "bin/$(NAME)" -ldflags $(EFFECTIVE_LD_FLAGS) cmd/server/main.go .PHONY: clean clean: rm -fr $(CURDIR)/bin $(CURDIR)/db/*.db .PHONY: server server: bin/$(NAME) ## Start server bin/$(NAME) .PHONY: test test: ## Run tests go test -v -race $(PACKAGES) .PHONY: migrate migrate: ## Run db migrate:up go run ./cmd/migrate/main.go .PHONY: migrate/down migrate_down: ## Run db migrate:down go run ./cmd/migrate/main.go down .PHONY: help help: @echo "Valid targets:" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'