-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
139 lines (115 loc) · 5.1 KB
/
Makefile
File metadata and controls
139 lines (115 loc) · 5.1 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
# =============================================================================
# DyingStar Website - Makefile
# =============================================================================
# Colors for output
CYAN := \033[36m
GREEN := \033[32m
YELLOW := \033[33m
RED := \033[31m
RESET := \033[0m
EXECUTOR := docker compose
# if podman is available, use it instead of docker
ifneq (, $(shell which podman 2>/dev/null))
$(info ❗❗ Using podman for compose commands❗❗)
EXECUTOR := podman compose
endif
COMPOSE := $(EXECUTOR) -f docker/docker-compose.yml
DEV_SERVICE := dev
APP_SERVICE := app
MEILISEARCH_SERVICE := meilisearch
# =============================================================================
# CP/PO/Others Profile - Simple site testing
# =============================================================================
.PHONY: start
start: ## Start the complete application (install, build, start) for testing
@echo "$(CYAN)🚀 Starting DyingStar Website for testing...$(RESET)"
@echo "$(YELLOW)This will install dependencies, build, and start the application$(RESET)"
@$(COMPOSE) up $(APP_SERVICE) --build
.PHONY: stop
stop: ## Stop all running services
@echo "$(CYAN)🛑 Stopping all services...$(RESET)"
@$(COMPOSE) down
# =============================================================================
# Dev Profile - Development commands
# =============================================================================
.PHONY: up
up: ## Start only MeiliSearch for development (no app)
@echo "$(CYAN)🔧 Starting development environment (MeiliSearch only)...$(RESET)"
@$(COMPOSE) up $(MEILISEARCH_SERVICE) $(DEV_SERVICE) -d
@echo "$(GREEN)✅ Development environment ready!$(RESET)"
@echo "$(YELLOW)MeiliSearch: http://localhost:7700$(RESET)"
@echo "$(YELLOW)Use 'make pnpm <command>' to run pnpm commands$(RESET)"
.PHONY: down
down: ## Stop development environment
@echo "$(CYAN)🛑 Stopping development environment...$(RESET)"
@$(COMPOSE) down
# Generic pnpm command runner
.PHONY: pnpm
pnpm: ## Run any pnpm command (usage: make pnpm install, make pnpm dev, etc.)
@if [ -z "$(filter-out $@,$(MAKECMDGOALS))" ]; then \
echo "$(RED)❌ Please provide a pnpm command. Usage: make pnpm <command>$(RESET)"; \
echo "$(YELLOW)Examples: make pnpm install, make pnpm dev, make pnpm build$(RESET)"; \
exit 1; \
fi
@echo "$(CYAN)📦 Running: pnpm $(filter-out $@,$(MAKECMDGOALS))$(RESET)"
@$(COMPOSE) exec $(DEV_SERVICE) sh -c "corepack enable && corepack install && pnpm $(filter-out $@,$(MAKECMDGOALS))"
# =============================================================================
# Utility commands
# =============================================================================
.PHONY: logs
logs: ## Show logs for all services
@$(COMPOSE) logs -f
.PHONY: logs-app
logs-app: ## Show logs for app service only
@$(COMPOSE) logs -f $(APP_SERVICE)
.PHONY: logs-dev
logs-dev: ## Show logs for dev service only
@$(COMPOSE) logs -f $(DEV_SERVICE)
.PHONY: logs-meilisearch
logs-meilisearch: ## Show logs for MeiliSearch only
@$(COMPOSE) logs -f $(MEILISEARCH_SERVICE)
.PHONY: shell
shell: ## Open shell in dev container
@echo "$(CYAN)🐚 Opening shell in dev container...$(RESET)"
@$(COMPOSE) exec $(DEV_SERVICE) sh
.PHONY: status
status: ## Show status of all services
@echo "$(CYAN)📊 Service Status:$(RESET)"
@$(COMPOSE) ps
.PHONY: clean-volumes
clean-volumes: ## Remove all volumes (WARNING: This will delete all data!)
@echo "$(RED)⚠️ This will delete all Docker volumes and data!$(RESET)"
@read -p "Are you sure? (y/N) " answer; \
if [ "$$answer" = "y" ] || [ "$$answer" = "Y" ]; then \
$(COMPOSE) down -v; \
echo "$(GREEN)✅ Volumes cleaned$(RESET)"; \
else \
echo "$(YELLOW)Cancelled$(RESET)"; \
fi
# =============================================================================
# Help
# =============================================================================
.PHONY: help
help: ## Show this help message
@echo "$(CYAN)DyingStar Website - Available Commands:$(RESET)"
@echo ""
@echo "$(YELLOW)CP/PO/Others Profile (Simple Testing):$(RESET)"
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " $(CYAN)%-15s$(RESET) %s\n", $$1, $$2}' $(MAKEFILE_LIST) | grep -E "(start|stop)"
@echo ""
@echo "$(YELLOW)Dev Profile (Development):$(RESET)"
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " $(CYAN)%-15s$(RESET) %s\n", $$1, $$2}' $(MAKEFILE_LIST) | grep -E "(up|down|pnpm)"
@echo ""
@echo "$(YELLOW)Utilities:$(RESET)"
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " $(CYAN)%-15s$(RESET) %s\n", $$1, $$2}' $(MAKEFILE_LIST) | grep -E "(logs|shell|status|clean-volumes)"
@echo ""
@echo "$(YELLOW)Examples:$(RESET)"
@echo " $(CYAN)make start$(RESET) # Start app for testing (CP/PO/Others)"
@echo " $(CYAN)make up$(RESET) # Start dev environment (Dev)"
@echo " $(CYAN)make pnpm dev$(RESET) # Start Next.js dev server"
@echo " $(CYAN)make pnpm build$(RESET) # Build the application"
@echo " $(CYAN)make install$(RESET) # Install dependencies"
# Default target
.DEFAULT_GOAL := help
# Allow arguments to be passed to make commands
%:
@: