# Ruoyi 项目 Makefile
APP_PORT = $(or $(APP_PORT_1),8000)

.PHONY: build clean test

# 项目模块
MODULES = ruoyi-admin ruoyi-common ruoyi-framework ruoyi-generator ruoyi-party ruoyi-quartz ruoyi-system

# 构建所有模块
build: 
	@echo "开始构建所有模块..."
	@for module in $(MODULES); do \
		echo "构建模块: $$module"; \
		cd $$module && mvn -s /workspace/settings.xml clean package -DskipTests && cd ..; \
	done
	@echo "所有模块构建完成"

# 清理所有模块
clean:
	@echo "开始清理所有模块..."
	@for module in $(MODULES); do \
		echo "清理模块: $$module"; \
		cd $$module && mvn -s /workspace/settings.xml clean && cd ..; \
	done
	@echo "所有模块清理完成"

# 运行测试
test:
	@echo "开始运行测试..."
	@for module in $(MODULES); do \
		echo "测试模块: $$module"; \
		cd $$module && mvn -s /workspace/settings.xml test && cd ..; \
	done
	@echo "所有测试运行完成"

# 安装依赖
install:
	@echo "开始安装所有模块依赖..."
	@for module in $(MODULES); do \
		echo "安装模块依赖: /workspace/$$module"; \
		cd /workspace/$$module && mvn -s /workspace/settings.xml install -DskipTests && cd ..; \
	done
	@echo "所有模块依赖安装完成"

# 启动应用（依赖 install）
run:
	@echo "启动 ruoyi-admin 应用..."
	cd /workspace/ruoyi-admin && mvn -s /workspace/settings.xml spring-boot:run &
	@echo "应用已启动"

# 停止命令
.PHONY: stop
stop:
	@echo "正在停止..."
	@if command -v lsof >/dev/null 2>&1; then \
		echo "使用 lsof 命令停止应用..."; \
		lsof -ti:$(APP_PORT) | xargs kill -9 2>/dev/null || echo "没有找到运行在端口 $(APP_PORT) 的进程"; \
	elif command -v ss >/dev/null 2>&1; then \
		echo "使用 ss 命令停止应用..."; \
		ss -ltnp | grep ':$(APP_PORT)' | awk '{print $7}' | sed 's/.*pid=\([0-9]*\).*/\1/' | xargs kill 2>/dev/null || echo "没有找到运行在端口 $(APP_PORT) 的进程"; \
	else \
		echo "❌ 错误：系统中没有找到 lsof 或 ss 命令"; \
		exit 1; \
	fi
	@echo "✅ 系统已停止"
