summaryrefslogtreecommitdiff
path: root/run
blob: 44f505ea4ee522ec1d2e32bca11d5247b423886f (plain) (blame)
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
#!/usr/bin/env fish

argparse 'u/users=+' 'r/repos=+' -- $argv
or exit 1;

# create users and copy keys in correct location, set permissions
for user in (string split ',' $_flag_u)
	echo "Setting up user: $user"
	set -l HOME "/home/$user"
	adduser --home $HOME -D "$user" --shell "/usr/bin/git-shell"
	passwd -u "$user"
	mkdir "$HOME/.ssh"
	cp "/var/keys/$user/authorized_keys" "$HOME/.ssh/"
	chown -R $user "$HOME"
	chmod -R 700 "$HOME"
end

for repoConfig in (string split ',' $_flag_r)
	set -l parsedConfig (string split ':' $repoConfig)
	set -l repo $parsedConfig[1]

	# we assume all repos to be in /srv/repos
	set -l repoDir "/srv/repos/$repo"
	echo "Setting up repo: $repo"
	addgroup "$repo"

	# assign groups to user
	for user in $parsedConfig[2..]
		adduser "$user" "$repo"
		id "$user"
	end

	# setup repo dir
	if not test -d $repoDir
		mkdir -p $repoDir
		git init --bare $repoDir -b trunk
	end
	chgrp -R "$repo" "$repoDir"
end

echo "Setting up server"
# generate host keys in case
mkdir -p /var/keys/etc/ssh/ && ssh-keygen -A -f /var/keys
# run ssh daemon
/usr/sbin/sshd -D -e