# VERSION is overridable (the Dockerfile passes its ARG VERSION in) and # degrades to "dev" when git is unavailable or there is no .git — the # build must not depend on the repository history being in the build # context. VERSION ?= $(shell { git describe --always --dirty; } 2>/dev/null || echo dev) BUILDARCH := $(shell uname -m) BINARY := netwatch-server GOLDFLAGS += -s -w GOLDFLAGS += -X main.Version=$(VERSION) GOLDFLAGS += -X main.Buildarch=$(BUILDARCH) .PHONY: all build test lint fmt fmt-check check docker hooks run clean all: build build: CGO_ENABLED=0 go build -trimpath -ldflags "$(GOLDFLAGS)" \ -o ./$(BINARY) ./cmd/netwatch-server/ test: timeout 30 go test ./... lint: golangci-lint run ./... fmt: go fmt ./... fmt-check: @test -z "$$(gofmt -l .)" || \ (echo "Files not formatted:"; gofmt -l .; exit 1) check: test lint fmt-check docker: timeout 300 docker build -t netwatch-server -f ../Dockerfile.backend .. hooks: @printf '#!/bin/sh\ncd backend && make check\n' > \ $$(git rev-parse --show-toplevel)/.git/hooks/pre-commit @chmod +x \ $$(git rev-parse --show-toplevel)/.git/hooks/pre-commit @echo "Pre-commit hook installed" run: build ./$(BINARY) clean: rm -f ./$(BINARY)