UNAME_S := $(shell uname -s) VERSION := $(shell git describe --always --dirty) BUILDARCH := $(shell uname -m) BINARY := netwatch-server GOLDFLAGS += -X main.Version=$(VERSION) GOLDFLAGS += -X main.Buildarch=$(BUILDARCH) ifeq ($(UNAME_S),Darwin) GOFLAGS := -ldflags "$(GOLDFLAGS)" else GOFLAGS = -ldflags "-linkmode external -extldflags -static $(GOLDFLAGS)" endif .PHONY: all build test lint fmt fmt-check check docker hooks run clean all: build build: ./$(BINARY) ./$(BINARY): $(shell find . -name '*.go' -type f) go.mod go.sum go build -o $@ $(GOFLAGS) ./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)