-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTaskfile.yml
151 lines (123 loc) · 4.22 KB
/
Taskfile.yml
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
version: '3'
vars:
# general
GOBIN: "$(pwd)/bin"
# docker
VERSION: "latest"
DOCKER_IMAGE: "escalopa/raft-kv"
tasks:
run:
cmds:
- go run ./cmd/raft-kv/. --config .catalystgo/config-local.yml
ui:
cmds:
- go run ./cmd/ui/main.go
silent: true
mock:
cmds:
- "{{.GOBIN}}/mockgen -source=./internal/mock/mock.go -destination=./internal/mock/mock.go -package=mock"
format:
cmds:
- task: go_files
vars: { COMMAND: "gofmt -w {} +"}
- task: go_files
vars: { COMMAND: "{{.GOBIN}}/goimports -w {} +"}
test:
cmds:
- go test -v -cover -json -coverprofile=coverage.out
$(go list ./... | grep -Ewv "(mock$|cmd$)") | {{.GOBIN}}/gotestfmt
lint:
cmds:
- "{{.GOBIN}}/revive
-config revive.toml
-formatter friendly
-exclude ./mock
-exclude ./internal/pb
-exclude vendor.proto
./..."
pre-commit:
desc: "Run all pre-commit tasks"
cmds:
- task: format
- task: lint
- task: test
# proto & deps
generate:
cmds:
# generate
- "{{.GOBIN}}/buf generate --template buf.gen.vendor.yaml || true" # ignore error on vendor generation (because it might be empty)
- "{{.GOBIN}}/buf generate --template buf.gen.yaml"
- "{{.GOBIN}}/catalystgo implement --input pkg --output internal/api"
- go mod tidy
deps:
- vendor
vendor:
cmds:
- "{{.GOBIN}}/protosync init"
- "{{.GOBIN}}/protosync vendor --file protosync.yml"
deps:
- deps
deps:
cmds:
# grpc
- GOBIN={{.GOBIN}} go install github.com/grpc-ecosystem/grpc-gateway/v2/[email protected]
- GOBIN={{.GOBIN}} go install github.com/grpc-ecosystem/grpc-gateway/v2/[email protected]
- GOBIN={{.GOBIN}} go install github.com/planetscale/vtprotobuf/cmd/[email protected]
- GOBIN={{.GOBIN}} go install google.golang.org/protobuf/cmd/[email protected]
- GOBIN={{.GOBIN}} go install google.golang.org/grpc/cmd/[email protected]
- GOBIN={{.GOBIN}} go install github.com/bufbuild/buf/cmd/[email protected]
# catalystgo
- GOBIN={{.GOBIN}} go install github.com/catalystgo/cli/cmd/[email protected]
- GOBIN={{.GOBIN}} go install github.com/catalystgo/cli/cmd/[email protected]
- GOBIN={{.GOBIN}} go install github.com/catalystgo/[email protected]
# tools
- GOBIN={{.GOBIN}} go install github.com/pressly/goose/v3/cmd/[email protected]
- GOBIN={{.GOBIN}} go install golang.org/x/tools/cmd/[email protected]
- GOBIN={{.GOBIN}} go install github.com/mgechev/[email protected]
- GOBIN={{.GOBIN}} go install github.com/google/yamlfmt/cmd/[email protected]
- GOBIN={{.GOBIN}} go install github.com/golang/mock/[email protected]
- GOBIN={{.GOBIN}} go install github.com/gotesttools/gotestfmt/v2/cmd/[email protected]
# docker
docker-build-dev:
cmds:
- docker build --file ./.catalystgo/Dockerfile --tag dekuyo/raft-kv:dev --target dev --no-cache .
docker-build:
cmds:
- docker build --file ./.catalystgo/Dockerfile --tag {{.DOCKER_IMAGE}}:{{.VERSION}} --target production --no-cache .
docker-push:
cmds:
- docker push {{.DOCKER_IMAGE}}:{{.VERSION}}
docker-release:
cmds:
- task: docker-build
- task: docker-push
# docker-compose
docker-up-dev:
cmds:
- docker compose --file .catalystgo/docker-compose-dev.yml up -d
docker-down-dev:
cmds:
- docker compose --file .catalystgo/docker-compose-dev.yml down
docker-up:
cmds:
- docker compose --file .catalystgo/docker-compose.yml up -d
docker-down:
cmds:
- docker compose --file .catalystgo/docker-compose.yml down
docker-down-vol:
cmds:
- docker volume rm catalystgo_raft_data_1 catalystgo_raft_data_2 catalystgo_raft_data_3 catalystgo_raft_data_4 catalystgo_raft_data_5
# app
send:
cmds:
- ./send.sh {{default 100 .N}} "localhost:7001,localhost:7002,localhost:7003,localhost:7004,localhost:7005"
silent: true
# internal
go_files:
desc: "Return all .go files and run .COMMAND on them"
internal: true
cmds:
- find .
-name "*.go"
-not -path ./mock
-exec {{.COMMAND}};