-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
165 lines (141 loc) · 5.22 KB
/
Copy pathMakefile
File metadata and controls
165 lines (141 loc) · 5.22 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# Project Makefile
.PHONY: help build clean gen
.DEFAULT_GOAL := help
# Directories
WEBSOCKET_DIR := ./websocket
ALERT_LAMBDA_DIR := ./alert-lambda
STATS_LAMBDA_DIR := ./stats-lambda
WEBSITE_DIR := ./website
DUMMY_SENSOR_DIR := ./dummies/sensor
# Define targets for generated artifacts
WEBSOCKET_GEN := $(WEBSOCKET_DIR)/db/sqlc
ALERT_LAMBDA_GEN := $(ALERT_LAMBDA_DIR)/.venv
STATS_LAMBDA_GEN := $(STATS_LAMBDA_DIR)/.venv
WEBSITE_GEN := $(WEBSITE_DIR)/node_modules
WEBSITE_BUILD := $(WEBSITE_DIR)/dist
help:
@echo "Usage:"
@echo " make gen - Generate all required files"
@echo " make build - Build all services"
@echo " make preview - Run all services in production mode"
@echo " make clean - Clean up generated files"
@echo ""
@echo "Individual commands:"
@echo " make gen/websocket - Generate websocket files"
@echo " make gen/alert-lambda - Setup alert lambda environment"
@echo " make gen/stats-lambda - Setup stats lambda environment"
@echo " make gen/website - Setup website dependencies"
@echo " make gen/dummy-sensor - Setup dummy data generator"
@echo ""
@echo " make dev/websocket - Run websocket in dev mode"
@echo " make dev/alert-lambda - Run alert lambda in dev mode"
@echo " make dev/stats-lambda - Run stats lambda in dev mode"
@echo " make dev/website - Run website in dev mode"
@echo " make dev/dummy-sensor - Run dummy sensor in dev mode"
@echo ""
@echo " make build/websocket - Build websocket service"
@echo " make build/dummy-sensor - Build dummy sensor service"
@echo " make build/website - Build website"
@echo ""
@echo " make preview/websocket - Run websocket in production mode"
@echo " make preview/dummy-sensor - Run dummy sensor in production mode"
@echo " make preview/alert-lambda - Run alert lambda in production mode"
@echo " make preview/stats-lambda - Run stats lambda in production mode"
@echo " make preview/website - Run website in production mode"
# Generation targets
gen/websocket:
@echo "Generating database queries using sqlc..."
@cd $(WEBSOCKET_DIR) && \
sqlc generate && \
go mod download
@mkdir -p $(WEBSOCKET_GEN)
@touch $(WEBSOCKET_GEN)
gen/alert-lambda:
@echo "Setting up alert lambda environment..."
@cd $(ALERT_LAMBDA_DIR) && \
uv venv .venv && \
. .venv/bin/activate && \
uv sync
gen/stats-lambda:
@echo "Setting up stats lambda environment..."
@cd $(STATS_LAMBDA_DIR) && \
uv venv .venv && \
. .venv/bin/activate && \
uv sync
gen/dummy-sensor:
@echo "Setting up dummy data generator..."
@cd $(DUMMY_SENSOR_DIR) && \
go mod download
gen/website:
@echo "Setting up website dependencies..."
@cd $(WEBSITE_DIR) && \
bun install
gen: gen/websocket gen/alert-lambda gen/stats-lambda gen/website gen/dummy-sensor
@echo "All required files generated successfully."
# Development targets
dev/websocket: gen/websocket
@echo "Starting websocket in development mode..."
@cd $(WEBSOCKET_DIR) && air --build.bin "go run main.go"
dev/dummy-socket: gen/dummy-sensor
@echo "Starting websocket in development mode..."
@cd $(DUMMY_SENSOR_DIR) && air --build.bin "go run main.go"
dev/alert-lambda: gen/alert-lambda
@echo "Starting alert lambda in development mode..."
@cd $(ALERT_LAMBDA_DIR) && \
. .venv/bin/activate && \
fastapi run main.py --reload --port 8001
dev/stats-lambda: gen/stats-lambda
@echo "Starting stats lambda in development mode..."
@cd $(STATS_LAMBDA_DIR) && \
. .venv/bin/activate && \
fastapi run main.py --reload
dev/website: gen/website
@echo "Starting website in development mode..."
@cd $(WEBSITE_DIR) && bun dev
# Build targets
build/websocket: gen/websocket
@echo "Building websocket service..."
@mkdir -p $(WEBSOCKET_DIR)/build
@cd $(WEBSOCKET_DIR) && go build -o ./build/server
build/dummy-sensor: gen/dummy-sensor
@echo "Building dummy sensor service..."
@mkdir -p $(DUMMY_SENSOR_DIR)/build
@cd $(DUMMY_SENSOR_DIR) && go build -o ./build/server
build/website: gen/website
@echo "Building website..."
@cd $(WEBSITE_DIR) && bun run build
build: build/websocket build/website
@echo "All services built successfully."
# Preview (production) targets
preview/websocket: build/websocket
@echo "Starting websocket in production mode..."
@cd $(WEBSOCKET_DIR) && ./build/server
preview/dummy-sensor: build/dummy-sensor
@echo "Starting dummy-sensor in production mode..."
@cd $(DUMMY_SENSOR_DIR) && ./build/server
preview/alert-lambda: gen/alert-lambda
@echo "Starting alert lambda in production mode..."
@cd $(ALERT_LAMBDA_DIR) && \
. .venv/bin/activate && \
fastapi run main.py --port 8001
preview/stats-lambda: gen/stats-lambda
@echo "Starting stats lambda in production mode..."
@cd $(STATS_LAMBDA_DIR) && \
. .venv/bin/activate && \
fastapi run main.py
preview/website: build/website
@echo "Starting website in production mode..."
@cd $(WEBSITE_DIR) && bun run preview
# Clean up
clean:
@echo "Cleaning up..."
@rm -rf $(WEBSOCKET_DIR)/build
@rm -rf $(WEBSOCKET_DIR)/db/sqlc
@rm -rf $(DUMMY_SENSOR_DIR)/build
@rm -rf $(ALERT_LAMBDA_DIR)/.venv
@rm -rf $(ALERT_LAMBDA_DIR)/alerts.db
@rm -rf $(STATS_LAMBDA_DIR)/.venv
@rm -rf ./temperature.db
@rm -rf $(WEBSITE_DIR)/node_modules
@rm -rf $(WEBSITE_DIR)/dist
@echo "Clean up complete."