/
Makefile
165 lines (129 loc) · 4.16 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
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
##############################################################################
# Includes
##############################################################################
include .env
##############################################################################
# Prologue
##############################################################################
# MAKEFLAGS += --warn-undefined-variables
ifndef ENV
$(info Please set ENV to 'dev' or 'prod' in your .env file.)
endif
ifndef CONFIRM
CONFIRM := 0
endif
ifndef UID
UID := $(shell id -u)
endif
ifndef GID
GID := $(shell id -g)
endif
ENV_PATH := .env
NODE_DIRS := client server ingest dashboard-search node-admin-client
TEMPLATES_DIR := templates
TEMPLATES_FILES := $(shell find $(TEMPLATES_DIR) -type f)
BUILD_TEMPLATES_DIR := build/templates
SERVER_DIR := server
SERVER_FILES := $(shell find $(SERVER_DIR) ! -path '*node_modules*' ! -path '*dist*' -type f)
CLIENT_DIR := client
CLIENT_FILES := $(shell find $(CLIENT_DIR) ! -path '*node_modules*' -type f)
BUILD_SPA_DIR := build/spa
CURRENT_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
WSL := $(if $(shell command -v bash.exe 2> /dev/null),1,0)
UNAME := $(shell uname -s)
DOCKER_HOST_IP := host.docker.internal
ifeq ($(UNAME),Linux)
ifneq ($(WSL),1)
DOCKER_HOST_IP := $(shell ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')
endif
endif
ifeq ($(NGINX_PORT),443)
DC_prod := -f docker-compose.yml -f docker-compose.prod.yml -f docker-compose.prod.ssl.yml
else
DC_prod := -f docker-compose.yml -f docker-compose.prod.yml
endif
DC_dev := -f docker-compose.yml
RUN_MAKE := ENV=$(ENV) CONFIRM=$(CONFIRM) $(MAKE)
##############################################################################
# Primary Commands
##############################################################################
include makeparts/dependencies.mk
include makeparts/ingest.mk
include makeparts/hasura.mk
include makeparts/docker.mk
include makeparts/cleanup.mk
include makeparts/aliases.mk
######################################
### Client
WEBAPP_REQS := \
GRAPHQL_END_POINT \
MEILI_PUBLIC_KEY
.PHONY: webapp
#: Start the client dev server
webapp: $(addprefix env-, $(WEBAPP_REQS)) client/node_modules
cd client && quasar dev && cd ..
######################################
### Server
.PHONY: express
#: Start the express server
express: server/node_modules
cd server && REDIS_HOST=localhost REDIS_DOCKER_PORT=6379 ts-node src/index.ts && cd ..
ADD_DEV_USER_REQS := \
AUTH_SERVER_URL \
KEYCLOAK_USERNAME \
KEYCLOAK_PASSWORD \
KEYCLOAK_REALM \
GRAPHQL_END_POINT \
HASURA_SECRET \
DEV_USER_EMAIL \
DEV_USER_FIRST_NAME \
DEV_USER_LAST_NAME \
DEV_USER_PASSWORD
ADD_PROD_USER_REQS := \
AUTH_SERVER_URL \
KEYCLOAK_USERNAME \
KEYCLOAK_PASSWORD \
KEYCLOAK_REALM \
GRAPHQL_END_POINT \
HASURA_SECRET \
ADD_USER_CSV_PATH
.PHONY: add-dev-user
add-dev-user: node-admin-client/node_modules $(addprefix env-, $(ADD_DEV_USER_REQS))
@cd node-admin-client && yarn run add-users && cd ..
.PHONY: add-csv-user
add-csv-user: node-admin-client/node_modules $(addprefix env-, $(ADD_PROD_USER_REQS))
@cd node-admin-client && yarn run add-csv-users && cd ..
.PHONY: setup-restore
setup-restore: docker-database-restore sleep-45 docker sleep-25 migrate add-dev-user dashboard-ingest
.PHONY: setup-new
setup-new: docker sleep-15 migrate add-dev-user
.PHONY: setup
setup:
ifdef HASURA_DUMP
$(info Restoring database from $(HASURA_DUMP))
@$(RUN_MAKE) setup-restore
else
$(info Creating new database)
@$(RUN_MAKE) setup-new
endif
$(BUILD_SPA_DIR): $(ENV_PATH) $(CLIENT_DIR) $(CLIENT_FILES)
@cd client && yarn run build
@touch $(BUILD_SPA_DIR)
.PHONY: prod
#: Running production: build spa and then run docker
prod: $(BUILD_TEMPLATES_DIR) $(BUILD_SPA_DIR) docker
git-pull:
git pull
.PHONY: prod-restart
prod-restart: stop-docker git-pull prod
.PHONY: certs
certs: prod
@bash $(BUILD_TEMPLATES_DIR)/letsencrypt/init-letsencrypt.sh
.PHONY: ssh
ssh:
@ssh -i ~/.ssh/rick_johnson.pem ubuntu@pace.nd.edu
##############################################################################
# Epilogue
##############################################################################
include makeparts/utilities.mk
.DEFAULT_GOAL := help