# 变量定义
APP_NAME = hello_world
RUST = cargo
APP_PORT = $(or $(APP_PORT_1),8000)
RESOURCE_PATH = $(abspath $(dir $(lastword $(MAKEFILE_LIST))))/.resource/resource_dev.json
LOG_FILE = $(abspath $(dir $(lastword $(MAKEFILE_LIST))))/.logs/app.log

# 安装命令
.PHONY: install
install:
	@echo "检查 Rust 版本..."
	@rustc --version
	@echo "检查 Cargo 版本..."
	@cargo --version
	@echo "正在安装依赖..."
	@cargo build --release
	@echo "✅ 依赖安装完成！"

# 运行命令
.PHONY: run
run:
	@echo "正在启动 Rust 应用..."
	@mkdir -p $(dir $(LOG_FILE))
	RESOURCE_PATH=$(RESOURCE_PATH) APP_PORT_1=$(APP_PORT) cargo run --release > $(LOG_FILE) 2>&1 &
	@echo "✅ Rust 应用已启动，运行在端口 $(APP_PORT)"

# 停止命令
.PHONY: stop
stop:
	@echo "正在停止 Rust 应用..."
	@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 "✅ Rust 应用已停止"
