72 lines
1.8 KiB
Makefile
72 lines
1.8 KiB
Makefile
GO := /usr/local/go/bin/go
|
|
BINARY := clavitor
|
|
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
|
|
COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown)
|
|
DATE := $(shell date -u +%Y%m%d-%H%M)
|
|
|
|
LDFLAGS := -s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.buildDate=$(DATE)
|
|
|
|
# Download hosting
|
|
SITE_HOST := root@clavitor.ai
|
|
SITE_DIR := /opt/clavitor-web/downloads
|
|
|
|
export GOFIPS140 := latest
|
|
|
|
# Web files for syntax checking
|
|
WEB_DIR := cmd/clavitor/web
|
|
JS_FILES := $(wildcard $(WEB_DIR)/*.js)
|
|
|
|
# --- Development workflow (stop → build → start) ---
|
|
|
|
dev: stop check build start
|
|
|
|
check:
|
|
@echo "Checking JS syntax..."
|
|
@for f in $(JS_FILES); do node --check $$f || exit 1; done
|
|
@echo "JS syntax OK"
|
|
|
|
stop:
|
|
systemctl --user stop clavitor.service
|
|
|
|
start:
|
|
systemctl --user start clavitor.service
|
|
|
|
restart:
|
|
systemctl --user restart clavitor.service
|
|
|
|
status:
|
|
systemctl --user status clavitor.service
|
|
|
|
logs:
|
|
journalctl --user -u clavitor -f
|
|
|
|
# --- Build targets ---
|
|
|
|
.PHONY: dev stop start restart status logs build build-all linux-amd64 linux-arm64 test clean publish check
|
|
|
|
build: linux-amd64
|
|
|
|
build-all: linux-amd64 linux-arm64
|
|
|
|
linux-amd64:
|
|
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 \
|
|
$(GO) build -ldflags "$(LDFLAGS)" -o $(BINARY)-linux-amd64 ./cmd/clavitor
|
|
|
|
linux-arm64:
|
|
CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=aarch64-linux-gnu-gcc \
|
|
$(GO) build -ldflags "$(LDFLAGS)" -o $(BINARY)-linux-arm64 ./cmd/clavitor
|
|
|
|
test:
|
|
$(GO) test ./...
|
|
|
|
clean:
|
|
rm -f $(BINARY)-linux-amd64 $(BINARY)-linux-arm64
|
|
|
|
# --- Publish binaries to clavitor.ai/download ---
|
|
|
|
publish: build-all
|
|
ssh $(SITE_HOST) 'mkdir -p $(SITE_DIR)'
|
|
scp $(BINARY)-linux-amd64 $(SITE_HOST):$(SITE_DIR)/
|
|
scp $(BINARY)-linux-arm64 $(SITE_HOST):$(SITE_DIR)/
|
|
@echo "Published $(VERSION) to clavitor.ai/download"
|