BINARY_NAME := terraria-companion PORT ?= 3000 # ── Build ──────────────────────────────────────────────────────── .PHONY: build build: ## Build the production binary (embeds data assets) go build -tags embed_data -o $(BINARY_NAME) . .PHONY: build-nodata build-nodata: ## Build without embedded data (for CI/containers) go build -o $(BINARY_NAME) . .PHONY: build-snapshot build-snapshot: ## Build all platforms locally via goreleaser (snapshot) goreleaser build --snapshot --clean # ── Development ────────────────────────────────────────────────── .PHONY: dev dev: ## Run in dev mode (serves frontend from disk, hot-reloads data) DEV=1 go run . .PHONY: serve serve: build ## Build and run the production server ./$(BINARY_NAME) # ── Data Fetching ──────────────────────────────────────────────── .PHONY: fetch fetch: ## Fetch/resume data from Terraria wiki (Go fetcher) go run . fetch .PHONY: fetch-reset fetch-reset: ## Reset fetch state and start fresh go run . fetch --reset .PHONY: fetch-only fetch-only: ## Fetch a single phase (usage: make fetch-only PHASE=drops) go run . fetch --only=$(PHASE) # ── Quality ────────────────────────────────────────────────────── .PHONY: format format: ## Format Go source files gofmt -w . .PHONY: lint lint: ## Run linter golangci-lint run ./... .PHONY: ci-lint ci-lint: ## Run linter with colored output (for CI) golangci-lint run --out-format colored-line-number ./... # ── Cleanup ────────────────────────────────────────────────────── .PHONY: clean clean: ## Remove build artifacts rm -f $(BINARY_NAME) $(BINARY_NAME)-* rm -rf dist/ .PHONY: clean-data clean-data: ## Remove fetched data (keeps icons as cache) rm -rf data # ── Help ───────────────────────────────────────────────────────── .PHONY: help help: ## Show this help @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}' .DEFAULT_GOAL := help