ifneq (0,$(shell id -u)) fossil_database = db.fossil unitdir = "$${XDG_CONFIG_HOME:-$$HOME/.config}/systemd/user" unit_instance_name != systemd-escape "$$(realpath "$(fossil_database)")" our_name = fossil-sync unit_files_basenames = $(addprefix $(our_name)@.,service path timer) unit_files = $(addprefix src/,$(unit_files_basenames) fossil-init@.service) unit_instances = $(subst @,@"$(unit_instance_name)",$(unit_files_basenames)) unit_instance = $(our_name)@$(unit_instance_name).service fossil_test_instances = '$(shell systemd-escape fossil-instance-1)' '$(shell systemd-escape a/b/c/fossil-instance-2)' default: install start test install: sudo make install-deps install -m644 -t $(unitdir) -- $(unit_files) systemctl --user daemon-reload sudo make $@ start stop restart status show: | $(fossil_database) systemctl --user $@ $(unit_instances) follow: journalctl --user $(addprefix -u , $(unit_instances)) -f test: mkdir -p $(HOME)/src/a/b/c systemctl --user start --wait $(addprefix fossil-init@,$(fossil_test_instances)) sudo $(MAKE) -$(MAKEFLAGS) $@ ui: | work/.fslckout cd work && fossil ui $(fossil_database): fossil init $@ work: mkdir -p $@ work/.fslckout: | work $(fossil_database) cd work && fossil open ../$(fossil_database) else ifdef SUDO_USER THE_USER=$(SUDO_USER) else $(error "you must define THE_USER") endif unitdir = /etc/systemd/system unit_files = $(addprefix src/fossil-user,@.service .socket) src/fossil-test@.service src/fossil-init@.service units = $(filter-out %@.service,$(notdir $(unit_files))) executables = src/endofossil bindir = /usr/local/bin dependencies = socat fossil ssh fakeroot libnss-systemd SSH_USERNAME != if [ "$$SUDO_USER" ]; then echo "$$SUDO_USER"; else id -u; fi default: install start follow install: install -t /etc/ssh/ -- src/AuthorizedKeysCommand install -T -- src/AnonymousForceCommand /etc/ssh/user-$(THE_USER).AnonymousForceCommand install -m644 -t /etc/ssh/sshd_config.d -- src/fossil-user.conf install -m644 -t $(unitdir) -- $(unit_files) install -t $(bindir) -- $(executables) systemctl daemon-reload systemctl reload ssh deps install-deps: apt install --mark-auto --no-upgrade $(dependencies) test: install journalctl -f -u fossil-test@$(SSH_USERNAME) & p=$$!; systemctl start --wait fossil-test@$(SSH_USERNAME); sleep 1; kill $$p start stop restart status show: systemctl $@ $(units) follow: journalctl $(addprefix -u , $(units)) -f endif