# Makefile for mcgod project # Variables BINARY_NAME = mcgod DOCKER_IMAGE = docker.tipsy.codes/mcgod:latest DOCKER_PLATFORMS = linux/amd64,linux/arm64 # Default target .PHONY: build build: build-amd64 # Build for AMD64 .PHONY: build-amd64 build-amd64: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -o ${BINARY_NAME} ./cmd/mcgod # Build for ARM64 .PHONY: build-arm64 build-arm64: CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -a -installsuffix cgo -o ${BINARY_NAME} ./cmd/mcgod # Build multi-architecture Docker image .PHONY: build-docker build-docker: docker buildx build --platform ${DOCKER_PLATFORMS} -t ${DOCKER_IMAGE} --push . # Build Docker image for current architecture .PHONY: build-docker-local build-docker-local: docker build -t ${DOCKER_IMAGE} . # Clean build artifacts .PHONY: clean clean: rm -f ${BINARY_NAME} rm -f ${BINARY_NAME}.tar.gz # Run the application locally .PHONY: run run: ./${BINARY_NAME} # Run with Docker .PHONY: run-docker run-docker: docker run --rm -it ${DOCKER_IMAGE} # Format Go code .PHONY: fmt fmt: go fmt ./... # Lint Go code .PHONY: lint lint: golangci-lint run # Test the application .PHONY: test test: go test ./... # All targets .PHONY: all all: build clean # Generate Go documentation .PHONY: doc doc: go doc ./... # Check dependencies .PHONY: deps deps: go list -m all # Update dependencies .PHONY: update update: go get -u ./... # Run vet .PHONY: vet vet: go vet ./... # Run all checks .PHONY: check check: fmt vet lint test