Commit 6d8a975
Eric Bower
·
2026-06-13 13:58:09 -0400 EDT
parent 23ba3cd
refactor: use assoc array
1 files changed,
+22,
-37
+22,
-37
1@@ -1,44 +1,30 @@
2 #!/usr/bin/env bash
3
4-TRACKED_FILES=(
5- bin/
6- dot_pi/agent/extensions/
7- dot_pi/agent/settings.json
8- dot_config/
9- dot/gitconfig
10- dot/mbsyncrc
11- dot_gnupg/gpg-agent.conf
12- dot_ssh/config
13- dot_mblaze/mblaze
14- dot/msmtprc
15- dot/npmrc
16- dot/editorconfig
17-)
18-
19-TRACKED_LOCATIONS=(
20- ~/.local/bin/
21- ~/.pi/agent/extensions/
22- ~/.pi/agent/settings.json
23- ~/.config/
24- ~/.gitconfig
25- ~/.mbsyncrc
26- ~/.gnupg/gpg-agent.conf
27- ~/.ssh/config
28- ~/.mblaze/profile
29- ~/.msmtprc
30- ~/.npmrc
31- ~/.editorconfig
32+declare -A TRACKED
33+TRACKED=(
34+ [bin/]="$HOME/.local/bin/"
35+ [dot_pi/agent/extensions/]="$HOME/.pi/agent/extensions/"
36+ [dot_pi/agent/settings.json]="$HOME/.pi/agent/settings.json"
37+ [dot_config/]="$HOME/.config/"
38+ [dot/gitconfig]="$HOME/.gitconfig"
39+ [dot/mbsyncrc]="$HOME/.mbsyncrc"
40+ [dot_gnupg/gpg-agent.conf]="$HOME/.gnupg/gpg-agent.conf"
41+ [dot_ssh/config]="$HOME/.ssh/config"
42+ [dot_mblaze/mblaze]="$HOME/.mblaze/profile"
43+ [dot/msmtprc]="$HOME/.msmtprc"
44+ [dot/npmrc]="$HOME/.npmrc"
45+ [dot/editorconfig]="$HOME/.editorconfig"
46 )
47
48 find_files() {
49- local tfo="${TRACKED_FILES[$1]}"
50+ local tfo="$1"
51 if [[ ${tfo} == */ ]]; then
52 find "$PWD/${tfo}" -type d -exec find {} -maxdepth 1 -type f \; | sed "s|$PWD/${tfo}||" | sed "s|^/||"
53 fi
54 }
55
56 link_file() {
57- if [[ ! -L $2 && ! -f $2 && ! -d $2 ]]; then
58+ if [[ ! -L "$2" && ! -f "$2" && ! -d "$2" ]]; then
59 echo "Creating a link from $1 to $2"
60 mkdir -p "$(dirname "$2")"
61 ln -s "$1" "$2"
62@@ -54,22 +40,21 @@ unlink_file() {
63
64 case "${1:-link}" in
65 link)
66- for ((i = 0; i < ${#TRACKED_FILES[@]}; ++i)); do
67- tf="${TRACKED_FILES[$i]}"
68- tl="${TRACKED_LOCATIONS[$i]}"
69+ for tf in "${!TRACKED[@]}"; do
70+ tl="${TRACKED[$tf]}"
71 link_file "$PWD/${tf}" "${tl}"
72 while IFS= read -r file; do
73 link_file "$PWD/${tf}${file}" "${tl}${file}"
74- done < <(find_files "$i")
75+ done < <(find_files "$tf")
76 done
77 ;;
78 cleanup)
79- for ((i = 0; i < ${#TRACKED_FILES[@]}; ++i)); do
80- tl="${TRACKED_LOCATIONS[$i]}"
81+ for tf in "${!TRACKED[@]}"; do
82+ tl="${TRACKED[$tf]}"
83 unlink_file "${tl}"
84 while IFS= read -r file; do
85 unlink_file "${tl}${file}"
86- done < <(find_files "$i")
87+ done < <(find_files "$tf")
88 done
89 ;;
90 *)