forked from percona/pmm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
124 lines (100 loc) · 5.2 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
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
default: help
help: ## Display this help message.
@echo "Please use \`make <target>\` where <target> is one of:"
@grep '^[a-zA-Z]' $(MAKEFILE_LIST) | \
awk -F ':.*?## ' 'NF==2 {printf " %-26s%s\n", $$1, $$2}'
init: ## Install tools.
rm -rf bin
cd tools && go generate -x -tags=tools
# Download third-party proto files
$(eval GO_PROTO_VALIDATOR=$(shell go list -f '{{ .Version }}' -m github.com/mwitkow/go-proto-validators))
curl --create-dirs -L https://raw.githubusercontent.com/mwitkow/go-proto-validators/$(GO_PROTO_VALIDATOR)/validator.proto -o ../third_party/github.com/mwitkow/go-proto-validators/validator.proto
gen: clean ## Generate files.
# # generated by descriptors target
#./bin/prototool break check api -f api/api.descriptor
bin/buf breaking --against descriptor.bin api
bin/buf generate -v api
for API in api/agentlocalpb api/serverpb api/inventorypb api/managementpb api/managementpb/dbaas api/managementpb/ia api/managementpb/backup api/managementpb/azure api/qanpb api/platformpb ; do \
set -x ; \
bin/swagger mixin $$API/json/header.json $$API/*.swagger.json --output=$$API/json/$$(basename $$API).json --keep-spec-order; \
bin/swagger flatten --with-flatten=expand --with-flatten=remove-unused $$API/json/$$(basename $$API).json --output=$$API/json/$$(basename $$API).json ; \
bin/swagger validate $$API/json/$$(basename $$API).json ; \
bin/swagger generate client --with-flatten=expand --with-flatten=remove-unused --spec=$$API/json/$$(basename $$API).json --target=$$API/json \
--additional-initialism=aws \
--additional-initialism=db \
--additional-initialism=ok \
--additional-initialism=pmm \
--additional-initialism=psmdb \
--additional-initialism=pxc \
--additional-initialism=pt \
--additional-initialism=qan \
--additional-initialism=rds \
--additional-initialism=sql \
--additional-initialism=ha ; \
done
# generate public API spec, omit agentlocalpb (always private),
# and managementpb/dbaas, managementpb/ia, managementpb/backup , managementpb/azure and qanpb (not v1 yet)
bin/swagger mixin --output=api/swagger/swagger.json \
api/swagger/header.json \
api/serverpb/json/serverpb.json \
api/inventorypb/json/inventorypb.json \
api/managementpb/json/managementpb.json
bin/swagger validate api/swagger/swagger.json
bin/swagger-order --output=api/swagger/swagger.json api/swagger/swagger.json
# generate API spec with all PMM Server APIs (omit agentlocalpb)
bin/swagger mixin --output=api/swagger/swagger-dev.json \
api/swagger/header-dev.json \
api/serverpb/json/serverpb.json \
api/inventorypb/json/inventorypb.json \
api/managementpb/json/managementpb.json \
api/managementpb/dbaas/json/dbaas.json \
api/managementpb/ia/json/ia.json \
api/managementpb/backup/json/backup.json \
api/managementpb/azure/json/azure.json \
api/qanpb/json/qanpb.json \
api/platformpb/json/platformpb.json
bin/swagger validate api/swagger/swagger-dev.json
bin/swagger-order --output=api/swagger/swagger-dev.json api/swagger/swagger-dev.json
# generate API spec with only dev PMM Server APIs specifically for readme.io (omit agentlocalpb)
bin/swagger mixin --output=api/swagger/swagger-dev-only.json \
api/swagger/header-dev.json \
api/managementpb/dbaas/json/dbaas.json \
api/managementpb/ia/json/ia.json \
api/managementpb/backup/json/backup.json \
api/managementpb/azure/json/azure.json \
api/qanpb/json/qanpb.json \
api/platformpb/json/platformpb.json
bin/swagger validate api/swagger/swagger-dev-only.json
bin/swagger-order --output=api/swagger/swagger-dev-only.json api/swagger/swagger-dev-only.json
make clean_swagger
make format
bin/go-sumtype ./...
go install -v ./...
gen-alertmanager: # Generate Alertmanager client.
bin/swagger generate client --model-package=ammodels --client-package=amclient --spec=api/alertmanager/openapi.yaml --target=api/alertmanager
bin/gofumpt -l -w ./api/alertmanager
go install -v ./api/alertmanager/...
clean_swagger:
find api -name '*.swagger.json' -print -delete
clean: clean_swagger ## Remove generated files.
find api -name '*.pb.go' -print -delete
find api -name '*.pb.gw.go' -print -delete
for API in api/agentlocalpb api/serverpb api/inventorypb api/managementpb api/managementpb/dbaas api/managementpb/ia api/managementpb/backup api/qanpb api/platformpb ; do \
rm -fr $$API/json/client $$API/json/models $$API/json/$$(basename $$API).json ; \
done
rm -f api/swagger/swagger.json api/swagger/swagger-dev.json api/swagger/swagger-dev-only.json
test: ## Run tests
go test ./...
format: ## Format source code
bin/gofumpt -l -w .
bin/goimports -local github.com/percona/pmm -l -w .
bin/gci write --Section Standard --Section Default --Section "Prefix(github.com/percona/pmm)" .
check: ## Run required checkers and linters.
bin/golangci-lint run -c=.golangci.yml
bin/go-consistent -pedantic ./...
serve: ## Serve API documentation with nginx.
# http://127.0.0.1:8080/swagger-ui.html
nginx -p . -c api/nginx/nginx.conf
descriptors: ## Update API compatibility descriptors.
#./prototool break descriptor-set . -o api/api.descriptor
bin/buf build -o descriptor.bin --as-file-descriptor-set api