Add nasctl: Go NAS control plane with React frontend
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
BINARY=nasctl
|
||||
VERSION?=0.1.0
|
||||
GO?=go
|
||||
LDFLAGS=-s -w
|
||||
BUILD_FLAGS=CGO_ENABLED=0
|
||||
|
||||
.PHONY: build build-all frontend run package clean tidy test
|
||||
|
||||
frontend:
|
||||
cd web && npm install && npm run build
|
||||
|
||||
build: frontend
|
||||
$(BUILD_FLAGS) $(GO) build -ldflags "$(LDFLAGS)" -o bin/$(BINARY) ./cmd/nasctl
|
||||
|
||||
# build-go builds the binary without rebuilding the frontend (dist must exist).
|
||||
build-go:
|
||||
$(BUILD_FLAGS) $(GO) build -ldflags "$(LDFLAGS)" -o bin/$(BINARY) ./cmd/nasctl
|
||||
|
||||
build-all: frontend
|
||||
$(BUILD_FLAGS) GOOS=linux GOARCH=amd64 $(GO) build -ldflags "$(LDFLAGS)" -o bin/$(BINARY)-linux-amd64 ./cmd/nasctl
|
||||
$(BUILD_FLAGS) GOOS=linux GOARCH=arm64 $(GO) build -ldflags "$(LDFLAGS)" -o bin/$(BINARY)-linux-arm64 ./cmd/nasctl
|
||||
|
||||
run: build
|
||||
NASCTL_DB=$${NASCTL_DB:-./.data/nasctl.db} \
|
||||
NASCTL_SMB_CONF=$${NASCTL_SMB_CONF:-./.data/smb.conf} \
|
||||
NASCTL_EXPORTS=$${NASCTL_EXPORTS:-./.data/exports} \
|
||||
NASCTL_EXEC_SYSTEM=false \
|
||||
./bin/$(BINARY) --addr :8080
|
||||
|
||||
package: build-all
|
||||
@mkdir -p dist/deb/usr/local/bin dist/deb/etc/systemd/system dist/deb/DEBIAN
|
||||
cp bin/$(BINARY)-linux-amd64 dist/deb/usr/local/bin/$(BINARY)
|
||||
cp systemd/nasctl.service dist/deb/etc/systemd/system/$(BINARY).service
|
||||
printf 'Package: nasctl\nVersion: $(VERSION)\nSection: utils\nPriority: optional\nArchitecture: amd64\nMaintainer: nasctl\nDescription: Monolithic NAS control plane\n' > dist/deb/DEBIAN/control
|
||||
printf '#!/bin/sh\nset -e\ninstall -d /var/lib/nasctl\nsystemctl daemon-reload\nsystemctl enable nasctl.service || true\n' > dist/deb/DEBIAN/postinst
|
||||
chmod 0755 dist/deb/DEBIAN/postinst
|
||||
dpkg-deb --build dist/deb dist/nasctl_$(VERSION)_amd64.deb
|
||||
|
||||
clean:
|
||||
rm -rf bin dist .data web/node_modules web/.tsbuild
|
||||
|
||||
tidy:
|
||||
$(GO) mod tidy
|
||||
|
||||
test:
|
||||
$(GO) test ./...
|
||||
Reference in New Issue
Block a user