summaryrefslogtreecommitdiffstats
path: root/bin/dfmk
blob: 1496c10f936ba4204f5643c0be5fc363182fc26b (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
#!/bin/sh

REPO_FMT='ssh://git@git.pehjota.net/dotfiles/%s.git'

if [ ${#} -eq 0 ]; then
	printf 'Usage: %s repository ...\n' "${0}" >&2
	exit 1
fi

if ! [ "x$(vcsh mr status --porcelain | wc -l)" = 'x0' ]; then
	printf 'Error: mr repository has uncommited changes\n'
	exit 1
fi

for repo in "${@}"; do
	# Initialize repository
	vcsh init "${repo}"
	vcsh "${repo}" remote add origin "$(printf "${REPO_FMT}" "${repo}")"
	cat >"${HOME}/.gitignore.d/${repo}" <<-EOF
		# Exclude all files
		*

		# Include relevant files
		!/.gitignore.d/
		!/.gitignore.d/${repo}

		# Exclude swap and backup files
		*.s[a-w]?
		*.vim
		*~
		*.orig
		EOF

	# Add repository to mr.git
	cat >"${HOME}/.config/mr/available.d/${repo}.vcsh" <<-EOF
		[\$HOME/.config/vcsh/repo.d/${repo}.git]
		checkout = vcsh clone $(printf "${REPO_FMT}" "${repo}") ${repo}
		EOF
	vcsh mr add "${HOME}/.config/mr/available.d/${repo}.vcsh"
	vcsh mr commit -m "${repo}: New repository"

	# Enable repository in mr configuration
	ln -s "../available.d/${repo}.vcsh" \
		"${HOME}/.config/mr/config.d/${repo}.vcsh"
done