aboutsummaryrefslogtreecommitdiff
path: root/scripts/post-install.sh
blob: f184d9dc8e10363a9c1d89f720a5e2afdf20074e (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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/bin/sh

logfile="$HOME/post-install.log"
touch "$logfile"

echo "fixing perms on gpg directory"
{
	chown -R "$(whoami)" "$HOME/.gnupg/"
	find "$HOME/.gnupg" -type f -exec chmod 600 {} \;
	find "$HOME/.gnupg" -type d -exec chmod 700 {} \;
} >> "$logfile" 2>&1

echo "fixing remote repositories"
{
	for entry in \
		"$HOME/.dotfiles:git@cjennings.net:dotfiles.git" \
		"$HOME/.emacs.d:git@cjennings.net:dotemacs.git"
	do
		dir="${entry%%:*}"
		url="${entry#*:}"
		if [ ! -d "$dir/.git" ]; then
			echo "skip: $dir is not a git checkout"
			continue
		fi
		if git -C "$dir" remote | grep -qx origin; then
			git -C "$dir" remote set-url origin "$url"
		else
			git -C "$dir" remote add origin "$url"
		fi
		git -C "$dir" pull --set-upstream origin main || true
	done
} >> "$logfile" 2>&1

echo "cloning git repos"
{
	mkdir -p "$HOME/sync" "$HOME/pictures" "$HOME/code" "$HOME/projects"

	clone_if_missing() {
		_remote="$1"
		_dest="$2"
		_depth="${3:-}"
		if [ -e "$_dest" ]; then
			echo "skip: $_dest already exists"
			return 0
		fi
		if [ -n "$_depth" ]; then
			git clone --depth "$_depth" "$_remote" "$_dest"
		else
			git clone "$_remote" "$_dest"
		fi
	}

	clone_if_missing cjennings@cjennings.net:git/org.git       "$HOME/sync/org"
	clone_if_missing cjennings@cjennings.net:git/wallpaper.git "$HOME/pictures/wallpaper" 1
	clone_if_missing git@cjennings.net:dwm.git                 "$HOME/code/dwm"
	clone_if_missing git@cjennings.net:dmenu.git               "$HOME/code/dmenu"
	clone_if_missing git@cjennings.net:st.git                  "$HOME/code/st"
	clone_if_missing git@cjennings.net:slock.git               "$HOME/code/slock"
	clone_if_missing git@cjennings.net:pinentry-dmenu.git      "$HOME/code/pinentry-dmenu"

	clone_if_missing git@github.com:cjennings/pocketbook.git   "$HOME/code/pocketbook"
	clone_if_missing cjennings@cjennings.net:git/bsdsetup.git  "$HOME/code/bsdsetup"
	clone_if_missing git@cjennings.net:git/archsetup.git       "$HOME/code/archsetup"
	clone_if_missing git@cjennings.net:dotemacs.git            "$HOME/code/dotemacs"

	clone_if_missing cjennings@cjennings.net:git/wttrin.git    "$HOME/code/wttrin.git"
	clone_if_missing cjennings@cjennings.net:git/rsyncshot.git "$HOME/code/rsyncshot.git"

	clone_if_missing cjennings@cjennings.net:git/exercism.git      "$HOME/code/exercism"
	clone_if_missing cjennings@cjennings.net:git/elisp.git         "$HOME/code/elisp"
	clone_if_missing cjennings@cjennings.net:git/clisp.git         "$HOME/code/clisp"
	clone_if_missing cjennings@cjennings.net:git/lcthw.git         "$HOME/code/lcthw"
	clone_if_missing cjennings@cjennings.net:git/100dayspython.git "$HOME/code/100dayspython"

	clone_if_missing cjennings@cjennings.net:git/documents.git       "$HOME/projects/documents"
	clone_if_missing cjennings@cjennings.net:git/kit.git             "$HOME/projects/kit"
	clone_if_missing cjennings@cjennings.net:git/clipper.git         "$HOME/projects/clipper"
	clone_if_missing cjennings@cjennings.net:git/finances.git        "$HOME/projects/finances"
	clone_if_missing cjennings@cjennings.net:git/nasbuild.git        "$HOME/projects/nasbuild"
	clone_if_missing cjennings@cjennings.net:git/nextjob.git         "$HOME/projects/nextjob"
	clone_if_missing cjennings@cjennings.net:git/elibrary.git        "$HOME/projects/elibrary"
	clone_if_missing cjennings@cjennings.net:git/danneel-hoa.git     "$HOME/projects/danneel-hoa"
	clone_if_missing cjennings@cjennings.net:git/danneel-remodel.git "$HOME/projects/danneel-remodel"
} >> "$logfile" 2>&1

printf "\n\nDone.\n\n"