From 4e700cc107fe43273609672f7d77f225f7e1ca4c Mon Sep 17 00:00:00 2001 From: mustard Date: Wed, 3 Dec 2025 14:25:10 +0100 Subject: [PATCH] feat: add basic Makefile --- Makefile | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e90b537 --- /dev/null +++ b/Makefile @@ -0,0 +1,69 @@ +SHELL = /bin/bash +.POSIX_SHELL: + +ifneq (,$(wildcard .bundle-env)) +include .bundle-env +endif + +ifeq (root,$(shell whoami)) +check-root = @true +else +check-root = $(error this target requires root) +endif + +ifeq (dom0,$(shell hostname)) +check-dom0 = @true +check-domu = $(error this target must be run in the guest qube) +else +check-dom0 = $(error this target must be run in dom0) +check-domu = @true +endif + +BUNDLEIN := .bundles/qubes-mgmt-salt + + +ifeq (apply, $(firstword $(MAKECMDGOALS))) + # use the rest as arguments for "run" + APPLY_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) + # ...and turn them into do-nothing targets + $(eval $(APPLY_ARGS):;@:) +endif + + + +clean-workdir = git init -q -b $* && git diff --quiet && git diff --cached --quiet || (echo 'dirty tree; check git status' && false) + +.PHONY: guard-domu +guard-domu: + @ if [ "`hostname`" != "`qubesdb-read /name`" ]; then \ + echo "This task must be run in a guest domain"; \ + exit 1; \ + fi + +.PHONY: create-bundle +create-bundle: guard-domu + mkdir -p .bundles + git bundle create - --all > .bundles/qubes-mgmt-salt + +.PHONY: pull pull/% +pull: pull/$(shell git branch --show-current) +pull/%: + echo "check dom0" + $(check-dom0) + echo "clean workdir" + $(clean-workdir) + + echo "creating bundle" + qvm-run -p $(GUEST) "cd $(GUEST_REPO) && make create-bundle" $(BUNDLEIN) + + git remote add $(GUEST) $(BUNDLEIN) || true + + git pull $(GUEST) $*:$* + + qvm-run -p $(GUEST) "cd $(GUEST_REPO) && git update-ref refs/remotes/dom0/$* $*"