summaryrefslogtreecommitdiff
path: root/Makefile
blob: eef184cc983ba40b7c793b352ca7536b6ddd7a67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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))
unit_instances = $(subst @,@"$(unit_instance_name)",$(unit_files_basenames))
unit_instance = $(our_name)@$(unit_instance_name).service

default: install start ui
install:
	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




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
units = $(filter-out %@.service,$(notdir $(unit_files)))
executables = src/endofossil
bindir = /usr/local/bin
dependencies = socat fossil ssh fakeroot

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
install-debs:
	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