Introduce the Go backend (netwatch-server) with an HTTP API that accepts telemetry reports and persists them as zstd-compressed JSONL files. Reports are buffered in memory and flushed to disk when the buffer reaches 10 MiB or every 60 seconds.
54 lines
1.1 KiB
Makefile
54 lines
1.1 KiB
Makefile
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 .
|
|
|
|
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)
|