From 320a9454fe69284afff57790f8a0527dbf02dc7f Mon Sep 17 00:00:00 2001 From: Calmcacil Date: Mon, 12 Jan 2026 18:54:55 +0100 Subject: [PATCH] Add Makefile for build automation --- Makefile | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8bbda6c --- /dev/null +++ b/Makefile @@ -0,0 +1,80 @@ +# WireGuard Admin TUI +.PHONY: help build clean install test fmt lint run deps + +# Binary name +BINARY=wg-tui +CMD_PATH=./cmd/$(BINARY) + +# Build directory +BUILD_DIR=build + +# Go parameters +GOCMD=go +GOBUILD=$(GOCMD) build +GOCLEAN=$(GOCMD) clean +GOTEST=$(GOCMD) test +GOGET=$(GOCMD) get +GOMOD=$(GOCMD) mod + +help: ## Show this help message + @echo 'Usage: make [target]' + @echo '' + @echo 'Available targets:' + @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-15s %s\n", $$1, $$2}' $(MAKEFILE_LIST) + +build: ## Build the binary + @echo "Building $(BINARY)..." + @$(GOBUILD) -o $(BINARY) $(CMD_PATH)/main.go + @echo "Build complete: $(BINARY)" + +build-all: ## Build all binaries + @echo "Building all binaries..." + @$(GOBUILD) -o $(BINARY) ./... + +clean: ## Clean build artifacts + @echo "Cleaning..." + @$(GOCLEAN) + @rm -f $(BINARY) + @echo "Clean complete" + +install: ## Install the binary to $GOPATH/bin + @echo "Installing $(BINARY)..." + @$(GOBUILD) -o $$($(GOCMD) env GOPATH)/bin/$(BINARY) $(CMD_PATH)/main.go + @echo "Install complete" + +test: ## Run tests + @echo "Running tests..." + @$(GOTEST) -v ./... + +test-coverage: ## Run tests with coverage + @echo "Running tests with coverage..." + @$(GOTEST) -v -coverprofile=coverage.out ./... + @$(GOCMD) tool cover -html=coverage.out -o coverage.html + +fmt: ## Format Go code + @echo "Formatting code..." + @$(GOCMD) fmt ./... + +lint: ## Run golangci-lint (if installed) + @echo "Running linter..." + @if command -v golangci-lint > /dev/null; then \ + golangci-lint run; \ + else \ + echo "golangci-lint not found. Install from https://golangci-lint.run/usage/install/"; \ + fi + +deps: ## Download dependencies + @echo "Downloading dependencies..." + @$(GOMOD) download + @$(GOMOD) tidy + +run: build ## Build and run the binary + @echo "Running $(BINARY)..." + @./$(BINARY) + +dev: ## Run in development mode with hot reload (requires air) + @if command -v air > /dev/null; then \ + air; \ + else \ + echo "air not found. Install with: go install github.com/cosmtrek/air@latest"; \ + fi