main
1NAME ?= $(shell basename "$(CURDIR)")
2GIT_COMMIT ?= $(shell git rev-parse --short HEAD)
3SOURCE_FILES = $(shell find $(CURDIR) -type f -name '*.go')
4PACKAGES = $(shell go list ./...)
5
6EFFECTIVE_LD_FLAGS ?= "-X main.GitCommit=$(GIT_COMMIT) $(LD_FLAGS)"
7
8default: help
9
10bin: bin/$(NAME) ## Build binary
11
12bin/$(NAME): $(SOURCE_FILES)
13 go build -o "bin/$(NAME)" -ldflags $(EFFECTIVE_LD_FLAGS) cmd/server/main.go
14
15.PHONY: clean
16clean:
17 rm -fr $(CURDIR)/bin $(CURDIR)/db/*.db
18
19.PHONY: server
20server: bin/$(NAME) ## Start server
21 bin/$(NAME)
22
23.PHONY: test
24test: ## Run tests
25 go test -v -race $(PACKAGES)
26
27.PHONY: migrate
28migrate: ## Run db migrate:up
29 go run ./cmd/migrate/main.go
30
31.PHONY: migrate/down
32migrate_down: ## Run db migrate:down
33 go run ./cmd/migrate/main.go down
34
35.PHONY: help
36help:
37 @echo "Valid targets:"
38 @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'