forked from samradha-1/wapikit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
141 lines (107 loc) · 3.53 KB
/
Makefile
File metadata and controls
141 lines (107 loc) · 3.53 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
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
GOPATH ?= $(HOME)/go
GOBIN ?= $(GOPATH)/bin
ATLAS ?= /usr/local/bin/atlas
STUFFBIN ?= $(GOBIN)/stuffbin
JET ?= $(GOBIN)/jet
OPI_CODEGEN ?= $(GOBIN)/oapi-codegen
AIR ?= $(GOBIN)/air
PNPM ?= $(shell command -v pnpm 2> /dev/null)
FRONTEND_DIR = frontend
FRONTEND_BUILD_DIR = frontend/out
BIN := wapikit
STATIC := config.toml.sample \
frontend/out:/ \
internal/database/migrations:/migrations \
FRONTEND_MODULES = frontend/node_modules
$(ATLAS):
curl -sSf https://atlasgo.sh | sh -s -- --yes
$(JET):
go install github.com/go-jet/jet/v2/cmd/jet@latest
$(STUFFBIN):
go install github.com/knadh/stuffbin/...
$(AIR):
go install github.com/cosmtrek/air@latest
$(OPI_CODEGEN):
go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@latest
.PHONY: install-pnpm
install-pnpm:
@if ! command -v pnpm > /dev/null; then \
echo "PNPM is not installed. Installing..."; \
curl -fsSL https://get.pnpm.io/install.sh | sh -; \
fi
$(PNPM): install-pnpm
FRONTEND_DEPS = \
$(FRONTEND_MODULES) \
frontend/package.json \
frontend/pnpm-lock.yaml \
frontend/tsconfig.json \
frontend/.generated.ts \
frontend/.eslintrc.js \
frontend/.eslintignore \
frontend/postcss.config.mjs \
frontend/tailwind.config.ts \
$(shell find frontend/src frontend/public -type f)
$(FRONTEND_MODULES): frontend/package.json frontend/pnpm-lock.yaml
cd frontend && $(PNPM) install
touch -c $(FRONTEND_MODULES)
# Check for DB_URL environment variable
.PHONY: check-db-url
check-db-url:
@if [ -z "$$DB_URL" ]; then \
echo "Error: DB_URL environment variable is not set."; \
exit 1; \
fi
.PHONY: frontend-codegen
frontend-codegen: $(PNPM)
cd $(FRONTEND_DIR) && $(PNPM) install && $(PNPM) run codegen
$(FRONTEND_BUILD_DIR): $(FRONTEND_DEPS)
cd frontend && $(PNPM) run build
touch -c $(FRONTEND_BUILD_DIR)
.PHONY: build-frontend
build-frontend: $(FRONTEND_BUILD_DIR)
.PHONY: dev-backend
dev-backend: $(AIR)
air -c .air.toml
.PHONY: dev-backend-docker
dev-backend-docker:
CGO_ENABLED=0 go run -ldflags="-s -w " cmd/*.go --config=dev/config.toml
.PHONY: dev-frontend
dev-frontend: $(PNPM) $(FRONTEND_MODULES)
cd $(FRONTEND_DIR) && $(PNPM) run dev
.PHONY: dev
dev: dev-backend dev-frontend
.PHONY: backend-codegen
backend-codegen: $(OPI_CODEGEN)
$(OPI_CODEGEN) -package api_types -generate types -o internal/api_types/types.go spec.openapi.yaml
.PHONY: codegen
codegen: backend-codegen frontend-codegen
$(BIN): $(shell find . -type f -name "*.go") go.mod go.sum
CGO_ENABLED=0 go build -o ${BIN} -ldflags="-s -w" cmd/*.go
.PHONY: build-backend
build-backend: $(BIN)
.PHONY: dist
dist: build-frontend $(BIN) $(STUFFBIN)
$(STUFFBIN) -a stuff -in $(BIN) -out ${BIN} ${STATIC}
.PHONY: build
build: build-backend build-frontend
.PHONY: run_frontend
run_frontend: frontend-codegen
cd $(FRONTEND_DIR) && $(PNPM) install && $(PNPM) run dev
.PHONY: db-migrate
db-migrate: check-db-url $(ATLAS)
$(ATLAS) migrate diff --env global --var DB_URL=$$DB_URL
.PHONY: db-apply
db-apply: check-db-url $(ATLAS)
$(ATLAS) migrate apply --env global --var DB_URL=$$DB_URL
.PHONY: db-gen
db-gen: check-db-url $(JET)
$(JET) -dsn=$$DB_URL -path=./.db-generated && rm -rf ./.db-generated/model ./.db-generated/table ./.db-generated/enum && mv ./.db-generated/wapikit/public/** ./.db-generated && rm -rf ./.db-generated/wapikit
.PHONY: db-init
db-init: db-apply
# dev mode targets for misc tasks
.PHONY: format
format:
go fmt ./... && cd $(FRONTEND_DIR) && $(PNPM) run pretty
.PHONY: api-doc
api-doc: $(PNPM)
pnpm dlx @mintlify/scraping@latest openapi-file ./spec.openapi.yaml -o docs.wapikit.com/api-reference