summaryrefslogtreecommitdiff
path: root/build.sh
blob: 63f1435b5c9ffa1a3c8275ba57397142d41974b0 (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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/bin/sh

set -e

BINDIR="${HOME}/.local/bin"
CONFDIR="${HOME}/.config"
DATADIR="${HOME}/.local/share"
FONTDIR="${HOME}/.local/share/fonts"
BASHRC="${HOME}/.bashrc"
BASHPROFILE="${HOME}/.bash_profile"
ZPROFILE="${HOME}/.zprofile"
ZSHRC="${HOME}/.zshrc"
ZCACHE="${HOME}/.cache/zsh/history"
GITCONFIG="${HOME}/.gitconfig"

dwm_version="dwm_farajli-6.5.2"
dmenu_version="dmenu_farajli-5.3.0"
slstatus_version="slstatus_farajli-1.0.1"
st_version="st_farajli-0.9.2.1"

MAKEDIR() { mkdir -pv "${1}"; }

COPY() {
	cp -r "${@}"

	printf 'copied'
	while [ "$#" -gt 1 ]; do
	    printf ' %s' "$1"
	    shift
	done
	printf ' -> %s\n' "$1"
}

LINK() {
	ln -sf "${1}" "${2}"
	echo "linked" "${1}" '->' "${2}"
}

pkg() {
	package="${1}"
	shift
	for action in "${@}"; do
		case "${action}" in
		"sync") curl -LO https://farajli.net/archive/"${package}".tar.gz ;;
		"unpack") tar xf "${package}".tar.gz ;;
		"compile") make -C "${package}" ;;
		"install") PREFIX="${BINDIR}" make -C "${package}" install ;;
		"font_install")	cp -r "${package}" "${FONTDIR}" ;;
		?)
			echo Invalid usage of pkg >&2
			return 1
		;;
		esac
	done
}

clean() { rm -rf -- *.tar.gz LiberationMono "${dwm_version}" "${dmenu_version}" "${slstatus_version}" "${st_version}"; }

create_dirs() {
	MAKEDIR "${BINDIR}"
	MAKEDIR "${CONFDIR}"
	MAKEDIR "${DATADIR}"
	MAKEDIR "${FONTDIR}"
}

install_bash()        { COPY config/bash/bashrc              "${BASHRC}";  }
install_dunst()       {	COPY config/dunst                    "${CONFDIR}"; }
install_lf()          {	COPY config/lf                       "${CONFDIR}"; }
install_mimeapps()    {	COPY config/mimeapps.list            "${CONFDIR}"; }
install_mpv()         {	COPY config/mpv                      "${CONFDIR}"; }
install_nsxiv()       {	COPY config/nsxiv                    "${CONFDIR}"; }
install_nvim()        {	COPY config/nvim                     "${CONFDIR}"; }
install_picom()       { COPY config/picom                    "${CONFDIR}"; }
install_qutebrowser() {	COPY config/qutebrowser              "${CONFDIR}"; }
install_sxiv()        {	COPY config/sxiv                     "${CONFDIR}"; }
install_vim()         {	COPY config/vim                      "${CONFDIR}"; }
install_x11()         {	COPY config/x11                      "${CONFDIR}"; }
install_zathura()     {	COPY config/zathura                  "${CONFDIR}"; }
install_wallpapers()  { COPY etc/wallpapers                  "${DATADIR}"; }
install_pacman()      { sudo cp etc/arch/pacman.conf         /etc;         }

install_git() {
	sed '/# signingkey = <to be set manually>/d' config/git/gitconfig > "${GITCONFIG}"
	printf '%s\n' \
	"#####################################################################" \
	"Warning: Git commit/tag signing is enabled but signingKey is not set." \
	"#####################################################################" \
	"Configure it manually using:" \
	"    gpg --list-secret-keys --keyid-format=long" \
	"    git config --global user.signingkey <YOUR_KEY_ID>" >&2
}

install_sites() {
	MAKEDIR                              "${CONFDIR}"/sites
	COPY config/sites/bookmarks.txt      "${CONFDIR}"/sites
}

install_zsh() {
	MAKEDIR                              "$(dirname "${ZCACHE}")"
	touch                                "${ZCACHE}"
	COPY config/zsh/zshrc                "${ZSHRC}"
}

install_shell() {
	COPY config/shell                    "${CONFDIR}"
	LINK "${CONFDIR}"/shell/profile      "${BASHPROFILE}"
	LINK "${CONFDIR}"/shell/profile      "${ZPROFILE}"
}

install_script_lib() { COPY scripts/slib "${BINDIR}"; }

install_cli_scripts() {
	install_script_lib
	COPY scripts/cli/* "${BINDIR}"
}

install_gui_scripts() {
	install_script_lib
	COPY scripts/gui/* "${BINDIR}"
}

install_liberationmono() { pkg "LiberationMono" sync unpack font_install; }
install_dwm()            { pkg "${dwm_version}" sync unpack install;      }
install_st()             { pkg "${st_version}" sync unpack install;       }
install_dmenu()          { pkg "${dmenu_version}" sync unpack install;    }
install_slstatus()       { pkg "${slstatus_version}" sync unpack install; }