-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstwoling.sh
More file actions
executable file
·146 lines (135 loc) · 4.72 KB
/
stwoling.sh
File metadata and controls
executable file
·146 lines (135 loc) · 4.72 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
#!/usr/bin/env bash
# https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
declare p_dotfiles
declare p_configs
declare -a folders
declare -a files
declare dryrun
p_dotfiles="$HOME/Projects/Mine/dotfiles"
p_configs="$HOME/.config"
if [[ "${1}" = "run" ]]; then
dryrun=""
rsync="-haltzHAX"
else
dryrun="echo"
rsync="--dry-run -haltzHAX --info=PROGRESS"
fi
folders=(
".jq"
)
folders_config=(
"alacritty"
"atuin"
"bat"
"environment.d"
"fish"
"ghostty"
"gtk-3.0"
"gtk-4.0"
"hypr"
"kitty"
"micro"
"nwg-bar"
"nwg-dock"
"nwg-drawer"
"nwg-hud"
"nwg-launchers"
"qt5ct"
"qt6ct"
"satty"
"swaync"
"systemd"
"uwsm"
"waybar"
"waypaper"
"zed"
)
files=(
".gtkrc-2.0"
".profile"
)
files_config=(
"mimeapps.list"
"starship.toml"
"topgrade.toml"
)
printf "%s .config folders to syncronize...\n" "${#folders_config[@]}"
i=1
for d in "${folders_config[@]}"; do
printf "Syncronizing folder #%s\n" "${i}"
if [[ "${d}" =~ (^[.])([a-z0-9.-]+) ]]; then
newname=${BASH_REMATCH[2]}
echo "newname dot-$newname"
${dryrun:-} mkdir -pv "${p_dotfiles}/dot-${newname}/dot-config/${d}"
echo ${dryrun:-} rsync --info COPY,DEL "${rsync}" "${p_configs}/${d}/" "${p_dotfiles}/${newname}/dot-config/${d}/"
${dryrun:-} rsync --info COPY,DEL "${rsync}" "${p_configs}/${d}/" "${p_dotfiles}/${newname}/dot-config/${d}/"
else
echo "no new name"
${dryrun:-} mkdir -pv "${p_dotfiles}/${d}/dot-config/${d}"
echo ${dryrun:-} rsync --info COPY,DEL "${rsync}" "${p_configs}/${d}/" "${p_dotfiles}/${d}/dot-config/${d}/"
${dryrun:-} rsync --info COPY,DEL "${rsync}" "${p_configs}/${d}/" "${p_dotfiles}/${d}/dot-config/${d}/"
fi
((i += 1))
[[ $i -eq "${#folders[@]}" ]] && printf "#%s was the last one. Folders syncronization done." "$i"
done
unset BASH_REMATCH i d
printf "%s folders to syncronize...\n" "${#folders[@]}"
i=1
for d in "${folders[@]}"; do
printf "Syncronizing folder #%s\n" "${i}"
if [[ "${d}" =~ (^[.])([a-z0-9.-]+) ]]; then
newname=${BASH_REMATCH[2]}
echo "newname dot-$newname"
${dryrun:-} mkdir -pv "${p_dotfiles}/dot-${newname}/dot-config/${d}"
echo ${dryrun:-} rsync --info COPY,DEL "${rsync}" "${HOME}/${d}/" "${p_dotfiles}/${newname}/dot-config/${d}/"
${dryrun:-} rsync --info COPY,DEL "${rsync}" "${HOME}/${d}/" "${p_dotfiles}/${newname}/dot-config/${d}/"
else
echo "no new name"
${dryrun:-} mkdir -pv "${p_dotfiles}/${d}/dot-config/${d}"
echo ${dryrun:-} rsync --info COPY,DEL "${rsync}" "${HOME}/${d}/" "${p_dotfiles}/${d}/dot-config/${d}/"
${dryrun:-} rsync --info COPY,DEL "${rsync}" "${HOME}/${d}/" "${p_dotfiles}/${d}/dot-config/${d}/"
fi
((i += 1))
[[ $i -eq "${#folders[@]}" ]] && printf "#%s was the last one. Folders syncronization done." "$i"
done
unset BASH_REMATCH i d
printf "%s files to syncronize...\n" "${#files_config[@]}"
for f in "${files_config[@]}"; do
printf "Syncronizing file #%s\n" "${i}"
if [[ "${f}" =~ (^[.])([a-z0-9.-]+) ]]; then
newname=${BASH_REMATCH[2]}
echo "newname dot-$newname"
${dryrun:-} mkdir -pv "${p_dotfiles}"/"dot-${newname}"
echo ${dryrun:-} cp -v "${p_configs}/${f}" "${p_dotfiles}/dot-${newname}/"
${dryrun:-} cp -v "${p_configs}/${f}" "${p_dotfiles}/dot-${newname}/"
else
echo "no new name"
${dryrun:-} mkdir -pv "${p_dotfiles}"/"${f}"
echo ${dryrun:-} cp -v "${p_configs}/${f}" "${p_dotfiles}/${f}/"
${dryrun:-} cp -v "${p_configs}/${f}" "${p_dotfiles}/${f}/"
fi
((i += 1))
[[ $i -eq "${#files[@]}" ]] && printf "#%s was the last one. Files syncronization done.\n" "$i"
done
unset BASH_REMATCH i f
printf "%s files to syncronize...\n" "${#files[@]}"
for f in "${files[@]}"; do
printf "Syncronizing file #%s\n" "${i}"
if [[ "${f}" =~ (^[.])([a-z0-9.-]+) ]]; then
newname=${BASH_REMATCH[2]}
echo "newname dot-$newname"
${dryrun:-} mkdir -pv "${p_dotfiles}"/"dot-${newname}"
echo ${dryrun:-} cp -v "${HOME}/${f}" "${p_dotfiles}/dot-${newname}/"
${dryrun:-} cp -v "${HOME}/${f}" "${p_dotfiles}/dot-${newname}/"
else
echo "no new name"
${dryrun:-} mkdir -pv "${p_dotfiles}"/"${f}"
echo ${dryrun:-} cp -v "${HOME}/${f}" "${p_dotfiles}/dot-${newname}/"
${dryrun:-} cp -v "${HOME}/${f}" "${p_dotfiles}/${f}/"
fi
((i += 1))
[[ $i -eq "${#files[@]}" ]] && printf "#%s was the last one. Files syncronization done.\n" "$i"
done
unset BASH_REMATCH i f
printf "All %s folders and all %s files syncronized. Everything done.\n" "${#folders[@]}" "${#files[@]}"
exit 0