DEST ?= /srv/task-inventory OWNER ?= task-inventory:task-inventory OWNER_USER = $(firstword $(subst :, ,$(OWNER))) VENDOR_DIR = public/vendor RSYNC_EXCLUDES := \ --exclude='/.git/' \ --exclude='/data/' \ --exclude='/config.yaml' \ --exclude='/node_modules/' .PHONY: build deploy sync # Bundle vendor libs build: mkdir -p $(VENDOR_DIR) node_modules/.bin/esbuild --bundle --format=esm \ --outfile=$(VENDOR_DIR)/codemirror-bundle.mjs --minify \ codemirror-entry.mjs # Full deployment: build, sync files, fix ownership, install dependencies deploy: build sync sudo chown -R $(OWNER) $(DEST) sudo -u $(OWNER_USER) npm ci --prefix $(DEST) # Copy files only — useful for quick updates when dependencies haven't changed sync: sudo rsync -aP --delete --chown=$(OWNER) $(RSYNC_EXCLUDES) ./ $(DEST)/