-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup
More file actions
executable file
·163 lines (150 loc) · 3.76 KB
/
Copy pathsetup
File metadata and controls
executable file
·163 lines (150 loc) · 3.76 KB
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#!/usr/bin/env bash
DOTFILES=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
packages=(
"kitty"
"helix"
"zellij"
"polybar"
"i3"
"picom"
"rofi"
"wezterm"
"nvim"
# "eww"
"yazi"
"btop"
"zsh"
"fastfetch"
# "ghostty"
)
flag_force=0
print_list_of_config() {
echo "--- List of config ---"
for package in "${packages[@]}"; do
echo "$package"
done
}
print_help() {
echo "This is a small bash script to setup dotfiles"
echo "COMMAND:"
echo ""
echo "setup --setup <package-name>"
echo ""
echo "OPTIONS:"
echo ""
echo "-h --help show help"
echo "-s --setup setup package"
echo "-l --list show list of available config"
echo "-f --force replace if config folder exist"
echo "-a --all setup all available config"
echo ""
echo "EXAMPLE:"
echo "setup --setup nvim i3 kitty"
}
setup_zsh() {
echo " source "${DOTFILES}/zsh/main.zsh"" >> "${HOME}/.zshrc"
}
setup() {
if [[ $1 == "zsh" ]]; then
setup_zsh
else
if [[ -d "$HOME/.config/$1" ]]; then
echo "You already have $1 in ~/.config"
echo "Do you want to replace it? or rename it to $1.bk"
read -p "(Y)es (N)o (R)ename: " -r input
case "$input" in
y|Y)
rm -rf "${HOME}/.config/$1"
ln -s "${DOTFILES}/$1" "${HOME}/.config/$1"
;;
r|R)
mv "${HOME}/.config/$1" "${HOME}/.config/$1.bk"
ln -s "${DOTFILES}/$1" "${HOME}/.config/$1"
;;
*)
;;
esac
else
ln -s "${DOTFILES}/$1" "${HOME}/.config/$1"
fi
fi
}
setup_force() {
if [[ $1 == "zsh" ]]; then
setup_zsh
else
rm -rf "${HOME}/.config/$1"
ln -s "${DOTFILES}/$1" "${HOME}/.config/$1"
fi
}
setup_all() {
if [[ $1 == 1 ]]; then
for package in "${packages[@]}"; do
setup_force $package
done
else
for package in "${packages[@]}"; do
setup $package
done
fi
echo Setup Successful
}
main() {
if [[ "$#" == 0 ]]; then
print_help
fi
while [[ "$#" -gt 0 ]]; do
case "$1" in
-h|--help)
print_help
# print_list_of_config
exit 0
;;
-l|--list)
print_list_of_config
exit 0
;;
-a|--all)
if [[ $flag_force == 1 ]]; then
setup_all $flag_force
else
setup_all
fi
exit 0
;;
-f|--force)
flag_force=1
shift
;;
-s|--setup)
shift
if [[ $# == 0 ]]; then
echo "Please give config name"
fi
while [[ "$#" -gt 0 ]]; do
value="\<${1}\>"
if [[ ${packages[@]} =~ $value ]]
then
if [[ $flag_force == 1 ]]; then
setup_force $1
else
setup $1
fi
else
echo "name not found"
exit 1
fi
shift
done
exit 0
;;
*)
echo "Command not found"
print_help
print_list_of_config
exit 0
;;
esac
done
}
main "$@"