a73x

Makefile

Ref:   Size: 1.5 KiB

CARGO      := cargo
PROFILE    ?= debug
BIN        := git-collab
SERVER_BIN := git-collab-server
PREFIX     ?= /usr/local

# --- Building blocks ---
.PHONY: fmt check clippy test build install clean

fmt:
	$(CARGO) fmt

check:
	$(CARGO) check

clippy:
	$(CARGO) clippy -- -D warnings

test:
	$(CARGO) test

build:
	$(CARGO) build $(if $(filter release,$(PROFILE)),--release,)

# --- Composites ---
.PHONY: lint ci

lint: fmt check clippy

ci: lint test build

# --- Install ---
install: PROFILE := release
install: build install-man
	install -Dm755 target/release/$(BIN) $(PREFIX)/bin/$(BIN)
	install -Dm755 target/release/$(SERVER_BIN) $(PREFIX)/bin/$(SERVER_BIN)

uninstall:
	rm -f $(PREFIX)/bin/$(BIN) $(PREFIX)/bin/$(SERVER_BIN)

clean: clean-man
	$(CARGO) clean

# --- Man pages ---
MAN_DIR := man/man1

.PHONY: man install-man clean-man

man:
	MAN_OUT_DIR=$(MAN_DIR) $(CARGO) build
	@echo "Man pages written to $(MAN_DIR)/"

install-man: man
	install -d $(PREFIX)/share/man/man1
	install -m644 $(MAN_DIR)/*.1 $(PREFIX)/share/man/man1/

clean-man:
	rm -rf man/

# --- Docker ---
REGISTRY   := registry.a73x.sh
IMAGE      := $(REGISTRY)/git-collab-server
TAG        ?= 0.0.1

.PHONY: docker docker-push

docker:
	docker build -t $(IMAGE):$(TAG) .

docker-push: docker
	docker push $(IMAGE):$(TAG)

# --- Dev helpers ---
.PHONY: run serve dev dashboard

run:
	$(CARGO) run -- $(ARGS)

serve:
	$(CARGO) run --bin $(SERVER_BIN) -- $(ARGS)

dev: fmt
	$(CARGO) run -- $(ARGS)

dashboard: fmt
	$(CARGO) run -- dashboard