Files
mc-god/Makefile

90 lines
1.5 KiB
Makefile
Raw Normal View History

2026-02-15 21:40:52 -08:00
# 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