.PHONY: build run test test-race lint clean docker tidy install-systemd GO ?= go VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev) LDFLAGS := -s -w -X main.version=$(VERSION) build: CGO_ENABLED=0 $(GO) build -ldflags "$(LDFLAGS)" -o bin/nip05api ./cmd/nip05api run: $(GO) run ./cmd/nip05api test: $(GO) test ./... -count=1 test-race: $(GO) test ./... -race -count=1 lint: golangci-lint run tidy: $(GO) mod tidy clean: rm -rf bin/ .data/ docker: docker build --build-arg VERSION=$(VERSION) -t nip05api:$(VERSION) -t nip05api:latest . # Install onto a Linux host running systemd. Run as root. # Assumes the binary has already been built into ./bin/nip05api. install-systemd: id nip05 >/dev/null 2>&1 || useradd -r -s /usr/sbin/nologin -d /opt/nip05api nip05 install -d -m 0755 -o nip05 -g nip05 /opt/nip05api/.data install -d -m 0755 -o nip05 -g nip05 /opt/nip05api/bin install -m 0755 -o nip05 -g nip05 bin/nip05api /opt/nip05api/bin/nip05api install -m 0644 -o nip05 -g nip05 messages.example.yaml /opt/nip05api/messages.yaml install -m 0644 -o root -g root deploy/nip05api.service /etc/systemd/system/nip05api.service systemctl daemon-reload @echo "Installed. Now: copy your .env to /opt/nip05api/.env, then 'systemctl enable --now nip05api'."