summaryrefslogtreecommitdiff
path: root/Makefile
blob: 9fffea754d9e13d5716438e4e2ee6b1bd51c1bc9 (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
69
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-test-instance-1)' '$(shell systemd-escape a/b/c/fossil-test-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
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 openssh-server 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
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