.PHONY: all build clean run test docker-build docker-run install-dev help # 应用名称 APP_NAME := sms-receiver-v2 MAIN_FILE := main.go # Go 配置 GO := go GOFMT := gofmt GOVET := go vet GOTEST := go test # 构建配置 BUILD_DIR := ./build LDFLAGS := -ldflags="-w -s" # Docker 配置 DOCKER_IMAGE := sms-receiver-go DOCKER_TAG := latest # 默认目标 all: build ## build: 编译应用 build: @echo "编译应用..." $(GO) build $(LDFLAGS) -o $(APP_NAME) $(MAIN_FILE) @echo "编译完成: $(APP_NAME)" ## clean: 清理构建文件 clean: @echo "清理构建文件..." rm -f $(APP_NAME) rm -rf $(BUILD_DIR) @echo "清理完成" ## run: 运行应用 run: @echo "运行应用..." $(GO) run $(MAIN_FILE) ## test: 运行测试 test: @echo "运行测试..." $(GOTEST) -v ./... ## fmt: 格式化代码 fmt: @echo "格式化代码..." $(GOFMT) -s -w . ## vet: 代码质量检查 vet: @echo "代码质量检查..." $(GOVET) ./... ## install-dev: 安装开发依赖 install-dev: @echo "安装开发依赖..." $(GO) install -v github.com/golangci/golangci-lint/cmd/golangci-lint@latest ## lint: 代码检查 lint: @echo "代码检查..." golangci-lint run ## docker-build: 构建 Docker 镜像 docker-build: @echo "构建 Docker 镜像..." docker build -t $(DOCKER_IMAGE):$(DOCKER_TAG) . ## docker-run: 运行 Docker 容器 docker-run: @echo "运行 Docker 容器..." docker run -d \ --name $(DOCKER_IMAGE) \ -p 28001:28001 \ -v $(PWD)/config.yaml:/app/config.yaml:ro \ -v $(PWD)/data:/app/data \ --restart unless-stopped \ $(DOCKER_IMAGE):$(DOCKER_TAG) ## docker-stop: 停止 Docker 容器 docker-stop: @echo "停止 Docker 容器..." docker stop $(DOCKER_IMAGE) || true docker rm $(DOCKER_IMAGE) || true ## docker-logs: 查看 Docker 日志 docker-logs: docker logs -f $(DOCKER_IMAGE) ## password: 生成密码哈希 password: @echo "生成密码哈希..." @read -p "请输入密码: " password; \ $(GO) run tools/password_hash.go $$password ## help: 显示帮助信息 help: @echo "可用命令:" @grep -E '^## ' $(MAKEFILE_LIST) | sed 's/## / /' ## 初始化项目 init: @echo "初始化项目..." @if [ ! -f config.yaml ]; then \ cp config.example.yaml config.yaml; \ echo "已创建 config.yaml,请根据需要修改配置"; \ else \ echo "config.yaml 已存在"; \ fi