-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
165 lines (142 loc) · 6.23 KB
/
Makefile
File metadata and controls
165 lines (142 loc) · 6.23 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
# Miu2D Engine - Makefile
.PHONY: init dev dev-web dev-server build install db-migrate db-seed db-studio db-up db-down docker tsc test lint format help convert convert-verify
# 读取环境变量(如果存在)
-include .env
# 默认目标
.DEFAULT_GOAL := help
# 颜色输出
GREEN := \033[0;32m
YELLOW := \033[0;33m
BLUE := \033[0;34m
NC := \033[0m
help: ## 显示帮助信息
@printf "$(BLUE)═══════════════════════════════════════$(NC)\n"
@printf "$(GREEN) Miu2D Engine - 可用命令$(NC)\n"
@printf "$(BLUE)═══════════════════════════════════════$(NC)\n"
@printf " $(YELLOW)make init$(NC) - 首次初始化项目\n"
@printf " $(YELLOW)make dev$(NC) - 启动开发环境\n"
@printf " $(YELLOW)make dev-web$(NC) - 只启动 web\n"
@printf " $(YELLOW)make dev-server$(NC) - 只启动 server\n"
@printf " $(YELLOW)make build$(NC) - 编译生产版本\n"
@printf " $(YELLOW)make docker$(NC) - 构建 Docker 镜像\n"
@printf " $(YELLOW)make test$(NC) - 运行引擎测试\n"
@printf " $(YELLOW)make tsc$(NC) - 类型检查\n"
@printf " $(YELLOW)make db-studio$(NC) - 数据库可视化 (Web)\n"
@printf " $(YELLOW)make convert$(NC) - 一键转换所有资源\n"
@printf " $(YELLOW)make convert-verify$(NC) - 验证无损转换\n"
@printf "$(BLUE)═══════════════════════════════════════$(NC)\n"
init: ## 首次初始化项目(清理+安装+迁移+种子)
@printf "$(BLUE)═══════════════════════════════════════$(NC)\n"
@printf "$(GREEN) 🚀 项目初始化$(NC)\n"
@printf "$(BLUE)═══════════════════════════════════════$(NC)\n"
@printf "\n"
@printf "$(YELLOW)⚠️ 警告:此操作将执行以下内容:$(NC)\n"
@printf " • 停止并删除现有数据库容器\n"
@printf " • 删除现有数据库数据(.data/)\n"
@printf " • 重新安装依赖、迁移并注入种子数据\n"
@printf "\n"
@printf "$(YELLOW)确认继续?[y/N]: $(NC)"; \
read confirm; \
if [ "$$confirm" != "y" ] && [ "$$confirm" != "Y" ]; then \
printf "$(GREEN)已取消初始化$(NC)\n"; \
exit 0; \
fi
@printf "\n$(YELLOW)📝 [1/8] 检查环境变量文件...$(NC)\n"
@if [ ! -f .env ]; then \
cp .env.example .env; \
printf "$(GREEN)✓ 已从 .env.example 创建 .env 文件$(NC)\n"; \
else \
printf "$(GREEN)✓ .env 文件已存在$(NC)\n"; \
fi
@printf "\n$(YELLOW)🛑 [2/8] 停止现有容器...$(NC)\n"
@docker-compose down -v 2>/dev/null || true
@printf "$(GREEN)✓ 容器已停止$(NC)\n"
@printf "\n$(YELLOW)🗑️ [3/8] 清理数据目录...$(NC)\n"
@sudo rm -rf .data/postgres .data/minio
@printf "$(GREEN)✓ 数据目录已清理$(NC)\n"
@printf "\n$(YELLOW)📁 [4/8] 创建数据目录...$(NC)\n"
@mkdir -p .data/postgres .data/minio
@printf "$(GREEN)✓ 数据目录已创建$(NC)\n"
@printf "\n$(YELLOW)📦 [5/8] 安装依赖...$(NC)\n"
@pnpm install
@printf "$(GREEN)✓ 依赖安装完成$(NC)\n"
@printf "\n$(YELLOW)🐳 [6/8] 启动数据库和存储容器...$(NC)\n"
@docker-compose up -d db minio
@printf "$(GREEN)✓ 容器已启动$(NC)\n"
@printf "\n$(YELLOW)⏳ [7/8] 等待数据库就绪...$(NC)\n"
@sleep 5
@docker-compose exec -T db pg_isready -U postgres > /dev/null 2>&1 || sleep 3
@printf "$(GREEN)✓ 数据库就绪$(NC)\n"
@printf "\n$(YELLOW)🗃️ [8/8] 执行数据库迁移...$(NC)\n"
@pnpm db:migrate
@printf "$(GREEN)✓ 数据库迁移完成$(NC)\n"
@printf "\n$(BLUE)═══════════════════════════════════════$(NC)\n"
@printf "$(GREEN) ✨ 初始化完成!$(NC)\n"
@printf "$(BLUE)═══════════════════════════════════════$(NC)\n"
@printf "\n$(YELLOW)👉 运行 'make dev' 启动开发服务器$(NC)\n"
@printf "$(YELLOW)👉 MinIO 控制台: http://localhost:9001$(NC)\n\n"
# 安装依赖
install:
pnpm install
# 启动数据库和存储
db-up:
docker-compose up -d db minio
@echo "等待 MinIO 启动..."
@sleep 3
@docker exec miu2d-minio mc alias set local http://localhost:9000 minio minio123 2>/dev/null || true
@docker exec miu2d-minio mc mb local/miu2d --ignore-existing 2>/dev/null || true
# 停止数据库和存储
db-down:
docker-compose down
# 同时运行 web 和 server
dev: db-up
@printf "$(GREEN)🚀 启动开发环境...$(NC)\n"
pnpm dev
# 只运行 web
dev-web:
pnpm dev:web
# 只运行 server
dev-server: db-up
pnpm dev:server
# 构建所有包
build:
pnpm build
# 数据库迁移
db-migrate:
pnpm db:migrate
# 数据库种子数据
db-seed:
pnpm db:seed
# 数据库可视化(Drizzle Studio)
db-studio: db-up
@printf "$(GREEN)🗃️ 启动 Drizzle Studio: http://localhost:4983$(NC)\n"
pnpm --filter @miu2d/server db:studio
# 运行引擎测试
test:
pnpm --filter @miu2d/engine test
# 类型检查
tsc:
pnpm tsc
# 代码检查
lint:
pnpm lint
@bash packages/server/scripts/check-router-providers.sh
# 格式化代码
format:
pnpm format
# 一键转换所有资源(编码 + ASF + MPC + MAP + 视频 + 音乐)
convert: ## 一键转换所有资源并删除旧文件
@printf "$(GREEN)🔄 一键转换所有资源...$(NC)\n"
cd packages/converter && cargo run --release --bin convert-all -- ../../resources --delete-originals
@printf "$(GREEN)✓ 全部转换完成$(NC)\n"
convert-verify: ## 验证 ASF/MPC → MSF 无损转换
@printf "$(GREEN)🔍 验证 ASF/MSF 无损...$(NC)\n"
cd packages/converter && cargo run --release --bin verify -- ../../resources/asf
@printf "$(GREEN)🔍 验证 MPC/MSF 无损...$(NC)\n"
cd packages/converter && cargo run --release --bin verify_mpc -- ../../resources/mpc
# 构建 Docker 镜像
docker:
@printf "$(GREEN)🐳 构建 Docker 镜像...$(NC)\n"
docker build -f packages/server/Dockerfile -t miu2d-server:latest .
docker build -f packages/web/Dockerfile -t miu2d-web:latest .
@printf "$(GREEN)✓ 镜像构建完成$(NC)\n"