-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup
executable file
·95 lines (75 loc) · 1.71 KB
/
setup
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
#!/usr/bin/env zsh
git submodule init
git submodule update
# set basic apps
# what directories should be installable by all users including the root user
root=(
)
# for local user
useronly=(
_vim
_zsh
term
)
help(){
echo "Usage: setup [OPTIONS] [GROUP_NAME]...
Restore specified dotfile groups using stow. Groups are symlinked to \$HOME.
Multiple groups can be listed separated by spaces.
Use 'setup --basic' or 'setup -B' for a predefined set of essential groups.
Groups:
_vim, _zsh, _tmux, _git, _gdb, _fzf, _yarn, _python, _karabiner, _rclone
Options:
-B, --basic, basic Restore a predefined set of essential groups
(_vim, _zsh, term)
Example:
setup _vim _zsh _tmux # Restores vim, zsh, and tmux configurations
setup -B # Restores the basic configuration groups
"
}
stowit(){
# -v verbose
# -R recursive
# -t target
stow -v -R -t ${HOME} ${app}
}
basic(){
# install apps available to all users
echo "##### Stowing apps for all users "
echo ""
for app in ${root[@]}; do
echo "Stowing $app in progress."
stowit "${HOME}" $app
done
# install only user space folders (not root user)
echo ""
echo "##### Stowing apps for user only: $(whoami)"
echo ""
for app in ${useronly[@]}; do
if [[ $USER != "root" ]]; then
echo "Stowing $app in progress."
stowit "${HOME}" $app
fi
done
echo ""
echo "##### ALL DONE"
}
# Check if any arguments are provided
if [ $# -eq 0 ]; then
help
fi
while [[ $# -gt 0 ]]; do
case $1 in
-B|--basic|basic)
basic
;;
-h|--help|help)
help
return 0
;;
*)
app=$1
stowit $HOME $app
;;
esac
shift
done