.PHONY: build-all build-api build-admin build-node build-queue build-scheduler build-rpc-core \ gen-api gen-model docker-up docker-down docker-env-up docker-env-down lint clean \ run-api run-admin run-node run-queue run-scheduler run-rpc-core # Environment: dev | test | prod (default: dev) ENV ?= dev # Build targets build-all: build-api build-admin build-node build-queue build-scheduler build-rpc-core build-api: CGO_ENABLED=0 go build -trimpath -o bin/ppanel-api ./apps/api/ppanel.go build-admin: CGO_ENABLED=0 go build -trimpath -o bin/ppanel-admin ./apps/admin/ppaneladmin.go build-node: CGO_ENABLED=0 go build -trimpath -o bin/ppanel-node ./apps/node/ppanelnode.go build-queue: CGO_ENABLED=0 go build -trimpath -o bin/ppanel-queue ./apps/queue/queue.go build-scheduler: CGO_ENABLED=0 go build -trimpath -o bin/ppanel-scheduler ./apps/scheduler/scheduler.go build-rpc-core: CGO_ENABLED=0 go build -trimpath -o bin/ppanel-rpc-core ./apps/rpc/core/core.go # Run with environment config run-api: go run apps/api/ppanel.go -f apps/api/etc/api-$(ENV).yaml run-admin: go run apps/admin/ppaneladmin.go -f apps/admin/etc/admin-$(ENV).yaml run-node: go run apps/node/ppanelnode.go -f apps/node/etc/node-$(ENV).yaml run-queue: go run apps/queue/queue.go -f apps/queue/etc/queue-$(ENV).yaml run-scheduler: go run apps/scheduler/scheduler.go -f apps/scheduler/etc/scheduler-$(ENV).yaml run-rpc-core: go run apps/rpc/core/core.go -f apps/rpc/core/etc/core-$(ENV).yaml # Code generation gen-api: cd apps/api && goctl api go -api api.api -dir . -style goZero -home ../../goctl_tpl cd apps/admin && goctl api go -api admin.api -dir . -style goZero -home ../../goctl_tpl cd apps/node && goctl api go -api node.api -dir . -style goZero -home ../../goctl_tpl # fix: admin routes.go 中 server 包名与参数名 server(*rest.Server) 冲突 # 1. 若 goctl 生成了 server import 但没加别名,加上别名 sed -i '' 's|"github.com/zero-ppanel/zero-ppanel/apps/admin/internal/handler/server"|serverhandler "github.com/zero-ppanel/zero-ppanel/apps/admin/internal/handler/server"|g' apps/admin/internal/handler/routes.go # 2. 若 goctl 漏掉了 server import,补进去 grep -q 'handler/server' apps/admin/internal/handler/routes.go || sed -i '' 's|"github.com/zero-ppanel/zero-ppanel/apps/admin/internal/svc"|serverhandler "github.com/zero-ppanel/zero-ppanel/apps/admin/internal/handler/server"\n\t"github.com/zero-ppanel/zero-ppanel/apps/admin/internal/svc"|' apps/admin/internal/handler/routes.go # 3. 替换调用处 sed -i '' 's/Handler: server\./Handler: serverhandler./g' apps/admin/internal/handler/routes.go gen-model: @echo "Usage: make gen-model TABLE=user DIR=apps/api/internal/model/user" goctl model mysql ddl -src sql/001_init.up.sql -dir $(DIR) -table $(TABLE) -c # Docker docker-up: cd deploy && docker-compose up -d docker-down: cd deploy && docker-compose down docker-env-up: cd deploy && docker-compose -f docker-compose-env.yml up -d docker-env-down: cd deploy && docker-compose -f docker-compose-env.yml down # Quality lint: golangci-lint run ./... clean: rm -rf bin/