mirror of
https://github.com/IS1DI/x0gp.git
synced 2026-07-19 05:47:02 +00:00
93 lines
2.2 KiB
Makefile
93 lines
2.2 KiB
Makefile
# x0gp PoC server Makefile
|
|
#
|
|
# Common targets:
|
|
# make tidy - go mod tidy
|
|
# make build - compile poc-server (linux/arm64 by default for Orange Pi 5 Pro)
|
|
# make run - build + run locally (dev mode, port 8080)
|
|
# make proto - regenerate Go from proto/ via Docker
|
|
# make test - go test ./...
|
|
# make lint - go vet + (optional) golangci-lint
|
|
# make docker - build the api-gateway image
|
|
# make compose - run dev stack (postgres + redis + prometheus + grafana + api-gateway)
|
|
|
|
GO ?= go
|
|
APP := poc-server
|
|
BIN_DIR := bin
|
|
GOOS ?= linux
|
|
GOARCH ?= arm64
|
|
GOARM ?=
|
|
LDFLAGS := -s -w -X main.version=$(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
|
|
|
|
# Honour explicit user overrides of GOOS/GOARCH (e.g. make build GOARCH=amd64).
|
|
ifeq ($(GOARCH),arm64)
|
|
ifeq ($(GOOS),linux)
|
|
TARGET := $(BIN_DIR)/$(APP)-linux-arm64
|
|
endif
|
|
endif
|
|
ifeq ($(GOARCH),amd64)
|
|
ifeq ($(GOOS),linux)
|
|
TARGET := $(BIN_DIR)/$(APP)-linux-amd64
|
|
endif
|
|
endif
|
|
ifeq ($(GOARCH),arm64)
|
|
ifeq ($(GOOS),darwin)
|
|
TARGET := $(BIN_DIR)/$(APP)-darwin-arm64
|
|
endif
|
|
endif
|
|
ifeq ($(GOOS),windows)
|
|
TARGET := $(BIN_DIR)/$(APP)-windows-$(GOARCH).exe
|
|
endif
|
|
TARGET ?= $(BIN_DIR)/$(APP)
|
|
|
|
.PHONY: tidy
|
|
tidy:
|
|
$(GO) mod tidy
|
|
|
|
.PHONY: build
|
|
build:
|
|
mkdir -p $(BIN_DIR)
|
|
GOOS=$(GOOS) GOARCH=$(GOARCH) $(GO) build -ldflags "$(LDFLAGS)" -o $(TARGET) ./cmd/poc-server
|
|
@echo "built: $(TARGET)"
|
|
|
|
.PHONY: run
|
|
run: build
|
|
X0GP_DEV_MODE=true X0GP_LOG_LEVEL=debug ./$(TARGET)
|
|
|
|
.PHONY: proto
|
|
proto:
|
|
@echo "Regenerating protobuf Go code via buf in Docker..."
|
|
docker run --rm -v "$$PWD":/workspace -w /workspace bufbuild/buf:latest generate
|
|
@echo "Done. Generated code is in proto/gen/."
|
|
|
|
.PHONY: test
|
|
test:
|
|
$(GO) test ./... -race -count=1
|
|
|
|
.PHONY: lint
|
|
lint:
|
|
$(GO) vet ./...
|
|
@command -v golangci-lint >/dev/null && golangci-lint run || echo "(golangci-lint not installed, skipping)"
|
|
|
|
.PHONY: docker
|
|
docker:
|
|
docker build -t x0gp/api-gateway:dev -f Dockerfile .
|
|
|
|
.PHONY: compose-up
|
|
compose-up:
|
|
docker compose up -d
|
|
|
|
.PHONY: compose-down
|
|
compose-down:
|
|
docker compose down
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf $(BIN_DIR)
|
|
|
|
.PHONY: graphify
|
|
graphify:
|
|
$(GO) run ./scripts/graphify/main.go
|
|
|
|
.DEFAULT_GOAL := build
|
|
|