-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
62 lines (48 loc) · 2.05 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
.DEFAULT_GOAL := help
EXTERNAL_TOOLS := \
github.com/golangci/golangci-lint/cmd/golangci-lint@v1.51.1 \
go install github.com/cosmtrek/air@latest \
golang.org/x/pkgsite/cmd/pkgsite@latest # latest は go 1.19 以上が必要: https://github.com/golang/pkgsite#requirements
.PHONY: help
help: ## https://postd.cc/auto-documented-makefile/
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | \
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.PHONY: bootstrap
bootstrap: ## 外部ツールをインストールする。
for t in $(EXTERNAL_TOOLS); do \
echo "Installing $$t ..." ; \
go install $$t ; \
done
DC = docker compose
.PHONY: psql
psql: ## docker compose で起動した postgresql の db に接続する。
$(DC) exec postgres psql -U root postgresql
.PHONY: godoc
godoc: ## godoc をローカルで表示する。http://localhost:8080/{module_name}
pkgsite
.PHONY: mock
mock: ## mock を生成する。
# usecase 用。
mockgen -source=domain/repository/repository.go -destination=usecase/mock_repository_test.go -package=usecase_test
mockgen -source=domain/repository/urls.go -destination=usecase/mock_rurls_test.go -package=usecase_test
# handler 用。
mockgen -source=usecase/usecase.go -destination=handler/mock_usecase_test.go -package=handler_test
.PHONY: lint
lint: ## golangci を使って lint を走らせる。
golangci-lint run -v
.PHONY: lint-fix
lint-fix: ## lint 実行時, gofumpt のエラーが出たらやると良い。
golangci-lint run --fix
.PHONY: serve
serve: ## サーバーを起動する。
go run app/*
.PHONY: dev
dev: ## Hot reload 付きでサーバーを起動する。
air -c .air.toml
.PHONY: build-local
build-local: ## バイナリをビルドする(race オプションがついているため、ローカル実行専用とする)。
go build -race -o app-local app/*
# カバレッジが低い場合は build-loacl でも動かしてみて競合の確認をしたい。
.PHONY: test
test: ## 全テストを実行する。
go test -race -cover -shuffle=on ./... -v