-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
112 lines (97 loc) · 3.74 KB
/
Copy pathMakefile
File metadata and controls
112 lines (97 loc) · 3.74 KB
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
.DEFAULT_GOAL := help
ROOT_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
APP_DIR := $(ROOT_DIR)/app
# Auto-discover modules with Makefile under app.
MODULES ?= $(sort $(patsubst $(APP_DIR)/%/Makefile,%,$(wildcard $(APP_DIR)/*/Makefile)))
BFF_SERVERS ?= bff_bbs bff_bbs_admin bff_game_idle
IGNORE_ERROR ?= 1
include $(ROOT_DIR)/common/build/make/common.mk
# --- Root-only targets, avoiding module target collisions. ---
.PHONY: all
all: init api
@for module in $(MODULES); do \
echo "---- [$$module] ----"; \
$(MAKE) -C $(APP_DIR)/$$module all IGNORE_ERROR=$(IGNORE_ERROR) || exit 1; \
done
.PHONY: gen-all
gen-all: api
@for module in $(MODULES); do \
echo "---- [$$module] ----"; \
$(MAKE) -C $(APP_DIR)/$$module gen IGNORE_ERROR=$(IGNORE_ERROR) || exit 1; \
done
.PHONY: clean-all
clean-all: api-clean
@for module in $(MODULES); do \
echo "---- [$$module] ----"; \
$(MAKE) -C $(APP_DIR)/$$module clean IGNORE_ERROR=$(IGNORE_ERROR) || exit 1; \
done
.PHONY: tidy-all build-all
tidy-all build-all:
@for module in $(MODULES); do \
echo "---- [$$module] ----"; \
$(MAKE) -C $(APP_DIR)/$$module $(patsubst %-all,%,$@) IGNORE_ERROR=$(IGNORE_ERROR) || exit 1; \
done
.PHONY: format fmt
format: api-format
@for module in $(MODULES); do \
echo "---- [$$module] ----"; \
$(MAKE) -C $(APP_DIR)/$$module format IGNORE_ERROR=$(IGNORE_ERROR) || exit 1; \
done
fmt: format
.PHONY: doc-all
doc-all:
@for module in $(BFF_SERVERS); do \
echo "---- [$$module] ----"; \
$(MAKE) -C $(APP_DIR)/$$module doc IGNORE_ERROR=$(IGNORE_ERROR) || exit 1; \
done
.PHONY: sdk-validate-all
sdk-validate-all:
@for module in $(BFF_SERVERS); do \
echo "---- [$$module] ----"; \
$(MAKE) -C $(APP_DIR)/$$module sdk-validate IGNORE_ERROR=$(IGNORE_ERROR) || exit 1; \
done
.PHONY: sdk-all
sdk-all:
@for module in $(BFF_SERVERS); do \
echo "---- [$$module] ----"; \
$(MAKE) -C $(APP_DIR)/$$module sdk IGNORE_ERROR=$(IGNORE_ERROR) || exit 1; \
done
# --- Help ---
.PHONY: help
help:
@echo "Available targets:"
@echo ""
@echo "Root targets:"
@echo " make init - install development tools"
@echo " make api - generate shared API proto code"
@echo " make api-dep - update Buf dependencies"
@echo " make api-lint - lint shared API proto with Buf"
@echo " make api-clean - clean shared API generated code"
@echo " make api-format - format shared API proto and common Go files"
@echo " make format - format shared API and all app modules"
@echo " make all - run init, api, gen, and build"
@echo ""
@echo "Batch targets:"
@echo " make gen-all - generate code for all modules"
@echo " make clean-all - clean generated files for all modules"
@echo " make tidy-all - run go mod tidy for all modules"
@echo " make build-all - build all services"
@echo " make doc-all - generate BFF OpenAPI documents"
@echo " make sdk-validate-all - validate BFF OpenAPI documents"
@echo " make sdk-all - generate BFF SDKs from OpenAPI"
@echo ""
@echo "Single module targets:"
@echo " make -C app/<module> gen - generate code for one module"
@echo " make -C app/<module> clean - clean one module"
@echo " make -C app/<module> build - build one module"
@echo " make -C app/<module> tidy - run go mod tidy for one module"
@echo " make -C app/<module> format - format one module"
@echo " make -C app/<module> ent - generate Ent code"
@echo " make -C app/<module> doc - generate OpenAPI document"
@echo " make -C app/<module> sdk - generate BFF TypeScript Axios/Fetch, Go, Java and Rust SDKs"
@echo ""
@echo "Examples:"
@echo " make -C app/bff_bbs gen"
@echo " make -C app/user build"
@echo " make -C app/bff_bbs ent"
@echo " make -C app/bff_bbs doc"