1
0
Fork 0
mirror of https://github.com/aclist/dztui.git synced 2025-09-05 21:22:26 +02:00

fix: shorten symlink check time

This commit is contained in:
aclist 2024-12-19 10:21:44 +09:00
parent bdea37ddc4
commit 973e2dc100
3 changed files with 24 additions and 25 deletions

View file

@ -1202,29 +1202,22 @@ compare(){
}
legacy_symlinks(){
logger INFO "Removing legacy symlinks"
for d in "$game_dir"/*; do
if [[ $d =~ @[0-9]+-.+ ]]; then
logger INFO "Unlinking '$d'"
unlink "$d"
fi
done
readarray -t mod_dirs < <(find "$workshop_dir" -maxdepth 1 -mindepth 1 -type d)
logger INFO "Read local mods into array with length: ${#mod_dirs[@]}"
[[ ${#mod_dirs[@]} -eq 0 ]] && return
logger INFO "Removing legacy encoding format"
for d in "${mod_dirs[@]}"; do
# suppress errors if mods are downloading at boot
logger INFO "Testing directory '$d'"
[[ ! -f "$d/meta.cpp" ]] && continue
local id=$(awk -F"= " '/publishedid/ {print $2}' "$d"/meta.cpp | awk -F\; '{print $1}')
logger INFO "Given id is '$id'"
local encoded_id=$(echo "$id" | awk '{printf("%c",$1)}' | base64 | sed 's/\//_/g; s/=//g; s/+/]/g')
logger INFO "Resolved id is '$encoded_id'"
if [[ -h "$game_dir/@$encoded_id" ]]; then
logger INFO "Unlinking '$game_dir/@$encoded_id'"
unlink "$game_dir/@$encoded_id"
fi
done
readarray -t stale_mod_dirs1 < <(find "$workshop_dir" -maxdepth 1 -mindepth 1 -type l -name '@?*-*')
logger INFO "Read local mods into array 1 with length: ${#stale_mod_dirs[@]}"
if [[ ${#stale_mod_dirs1} -ne 0 ]]; then
for d in "${stale_mod_dirs1[@]}"; do
unlink "$game_dir/$d"
done
fi
readarray -t stale_mod_dirs2 < <(find "$workshop_dir" -maxdepth 1 -mindepth 1 -type l -name '@??')
logger INFO "Read local mods into array 2 with length: ${#stale_mod_dirs[@]}"
if [[ ${#stale_mod_dirs2} -eq 0 ]]; then
for d in "${stale_mod_dirs2[@]}"; do
unlink "$game_dir/$d"
done
fi
}
symlinks(){
readarray -t mod_dirs < <(find "$workshop_dir" -maxdepth 1 -mindepth 1 -type d)