From 30e80c351af80a80575c219d11e56d5e6b787acd Mon Sep 17 00:00:00 2001
From: Luca Bilke <bilke@tralios.de>
Date: Mon, 11 Dec 2023 16:40:59 +0100
Subject: [PATCH] improve trash-prune

---
 .local/bin/cron/trash-prune | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/.local/bin/cron/trash-prune b/.local/bin/cron/trash-prune
index 4b469f3d..84808a6c 100755
--- a/.local/bin/cron/trash-prune
+++ b/.local/bin/cron/trash-prune
@@ -23,19 +23,24 @@ list_trash_dirs() {
 	done
 }
 
-prune_dir() {
+prune() {
 	[ -w "$1" ] || return 1
-	for file in "$1"/info/*; do
-		[ "$(head -1 "$file")" = "[Trash Info]" ] || continue
-        if [ "$(date -ud "$days days ago" +%s)" -gt "$(date -ud "$(grep DeletionDate "$file" | cut -d '=' -f2)" +%s)" ]; then
-            file=$(basename "$file")
+	for file in "$1"/files/*; do
+        file=$(basename "$file")
+        [ "$file" = '*' ] && return
+        if [ ! -r "$1/info/$file" ] || [ ! "$(head -1 "$1/info/$file")" = "[Trash Info]" ]; then
+            [ -w "$1/info/$file" ] && rm -rf "$1/info/$file"
+            rm -rf "$1/files/$file"
+            continue
+        fi
+        if [ "$(date -ud "$days days ago" +%s)" -gt "$(date -ud "$(grep DeletionDate "$1/info/$file" | cut -d '=' -f2)" +%s)" ]; then
             echo "$file too old!"
-            rm "$1/info/$file"
-            rm "$1/files/$file"
+            rm -rf "$1/info/$file"
+            rm -rf "$1/files/$file"
         fi
 	done
 }
 
 for dir in $(list_trash_dirs); do
-	prune_dir $dir || echo "Not pruning $dir" >&2
+	prune "$dir" || echo "Failed to prune $dir"
 done