fix: clean-system — set -u убрал, paru yes|, убрал numfmt

This commit is contained in:
Dmitry
2026-05-13 20:38:57 +03:00
parent 44c0f614f2
commit 07ef30e604
+17 -40
View File
@@ -1,25 +1,13 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# clean-system — безопасная интерактивная очистка системы # clean-system — безопасная интерактивная очистка системы
set -euo pipefail set -eo pipefail
_size() { _size() {
du -sh "$1" 2>/dev/null | cut -f1 || echo "0" local path=$1
[[ -e "$path" ]] && du -sh "$path" 2>/dev/null | cut -f1 || echo "—"
} }
_freed() {
local before=$1 after=$2
# оба в байтах через numfmt
local b a
b=$(numfmt --from=iec "$before" 2>/dev/null || echo 0)
a=$(numfmt --from=iec "$after" 2>/dev/null || echo 0)
local diff=$(( b - a ))
(( diff > 0 )) && numfmt --to=iec "$diff" || echo "0"
}
# ── Задачи очистки ───────────────────────────────────────────
# Формат: "id|описание|команда|путь_для_размера"
declare -A TASK_CMD TASK_PATH TASK_DESC declare -A TASK_CMD TASK_PATH TASK_DESC
_register() { _register() {
@@ -37,7 +25,7 @@ _register pacman-cache \
_register paru-cache \ _register paru-cache \
"Paru build кеш" \ "Paru build кеш" \
"$HOME/.cache/paru" \ "$HOME/.cache/paru" \
paru -Sc --noconfirm yes | paru -Sc
_register uv-cache \ _register uv-cache \
"uv (Python) кеш" \ "uv (Python) кеш" \
@@ -75,30 +63,23 @@ _register pip-cache \
pip3 cache purge pip3 cache purge
_register zsh-compdump \ _register zsh-compdump \
"Zsh completion cache (пересоздастся автоматически)" \ "Zsh completion cache" \
"" \ "" \
bash -c 'rm -f "$HOME"/.config/zsh/.zcompdump*' rm -f "$HOME/.config/zsh/.zcompdump"
# ── Построение меню ────────────────────────────────────────── ORDERED=(pacman-cache paru-cache uv-cache npm-cache cargo-cache
restic-cache thumbnails journal pip-cache zsh-compdump)
main() { main() {
if ! command -v fzf &>/dev/null; then if ! command -v fzf &>/dev/null; then
echo "fzf not found" echo "fzf not found"; exit 1
exit 1
fi fi
local ORDERED=(pacman-cache paru-cache uv-cache npm-cache cargo-cache
restic-cache thumbnails journal pip-cache zsh-compdump)
local lines=() local lines=()
for id in "${ORDERED[@]}"; do for id in "${ORDERED[@]}"; do
local size="" local path="${TASK_PATH[$id]:-}"
local path="${TASK_PATH[$id]}" local size
if [[ -n "$path" && ( -d "$path" || -f "$path" ) ]]; then size=$( [[ -n "$path" ]] && _size "$path" || echo "—" )
size=$(_size "$path")
else
size="—"
fi
lines+=("$(printf "%-14s %6s %s" "$id" "$size" "${TASK_DESC[$id]}")") lines+=("$(printf "%-14s %6s %s" "$id" "$size" "${TASK_DESC[$id]}")")
done done
@@ -113,26 +94,22 @@ main() {
[[ -z "$selected" ]] && exit 0 [[ -z "$selected" ]] && exit 0
local total_freed=0
while IFS= read -r line; do while IFS= read -r line; do
local id local id
id=$(echo "$line" | awk '{print $1}') id=$(awk '{print $1}' <<< "$line")
local path="${TASK_PATH[$id]}"
local path="${TASK_PATH[$id]:-}"
local before="" local before=""
[[ -n "$path" && ( -d "$path" || -f "$path" ) ]] && before=$(_size "$path") [[ -n "$path" ]] && before=$(_size "$path")
echo "" echo ""
echo "▶ ${TASK_DESC[$id]}" echo "▶ ${TASK_DESC[$id]} ${before:+(было: $before)}"
eval "${TASK_CMD[$id]}" || true eval "${TASK_CMD[$id]}" || true
if [[ -n "$path" && -n "$before" ]]; then if [[ -n "$path" && -n "$before" ]]; then
local after local after
after=$(_size "$path") after=$(_size "$path")
local freed echo " → стало: $after"
freed=$(_freed "$before" "$after")
echo " → освобождено: $freed"
fi fi
done <<< "$selected" done <<< "$selected"