fix: portable stat and subshell variable mutation in cleanup script
- Replace macOS-only `stat -f%z` with portable `wc -c` for Linux compat - Replace `find | while` pipes with process substitution so TOTAL_FREED counter survives the loop (pipe runs in subshell, losing mutations) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -34,7 +34,7 @@ remove() {
|
|||||||
if [ -d "$target" ]; then
|
if [ -d "$target" ]; then
|
||||||
size=$(du -sk "$target" 2>/dev/null | cut -f1)
|
size=$(du -sk "$target" 2>/dev/null | cut -f1)
|
||||||
else
|
else
|
||||||
size=$(stat -f%z "$target" 2>/dev/null || echo 0)
|
size=$(wc -c < "$target" 2>/dev/null || echo 0)
|
||||||
size=$((size / 1024))
|
size=$((size / 1024))
|
||||||
fi
|
fi
|
||||||
TOTAL_FREED=$((TOTAL_FREED + size))
|
TOTAL_FREED=$((TOTAL_FREED + size))
|
||||||
@@ -44,7 +44,7 @@ remove() {
|
|||||||
size=$(du -sk "$target" 2>/dev/null | cut -f1)
|
size=$(du -sk "$target" 2>/dev/null | cut -f1)
|
||||||
rm -rf "$target"
|
rm -rf "$target"
|
||||||
else
|
else
|
||||||
size=$(stat -f%z "$target" 2>/dev/null || echo 0)
|
size=$(wc -c < "$target" 2>/dev/null || echo 0)
|
||||||
size=$((size / 1024))
|
size=$((size / 1024))
|
||||||
rm -f "$target"
|
rm -f "$target"
|
||||||
fi
|
fi
|
||||||
@@ -95,11 +95,11 @@ done
|
|||||||
for group_dir in "$SESSIONS_DIR"/*/; do
|
for group_dir in "$SESSIONS_DIR"/*/; do
|
||||||
debug_dir="$group_dir/.claude/debug"
|
debug_dir="$group_dir/.claude/debug"
|
||||||
[ -d "$debug_dir" ] || continue
|
[ -d "$debug_dir" ] || continue
|
||||||
find "$debug_dir" -type f -mtime +3 ! -name "latest" -print0 2>/dev/null | while IFS= read -r -d '' f; do
|
while IFS= read -r -d '' f; do
|
||||||
fname=$(basename "$f" .txt)
|
fname=$(basename "$f" .txt)
|
||||||
is_active "$fname" && continue
|
is_active "$fname" && continue
|
||||||
remove "$f"
|
remove "$f"
|
||||||
done
|
done < <(find "$debug_dir" -type f -mtime +3 ! -name "latest" -print0 2>/dev/null)
|
||||||
done
|
done
|
||||||
|
|
||||||
# --- Prune todo files (>3 days, skip files named after active sessions) ---
|
# --- Prune todo files (>3 days, skip files named after active sessions) ---
|
||||||
@@ -107,7 +107,7 @@ done
|
|||||||
for group_dir in "$SESSIONS_DIR"/*/; do
|
for group_dir in "$SESSIONS_DIR"/*/; do
|
||||||
todos_dir="$group_dir/.claude/todos"
|
todos_dir="$group_dir/.claude/todos"
|
||||||
[ -d "$todos_dir" ] || continue
|
[ -d "$todos_dir" ] || continue
|
||||||
find "$todos_dir" -type f -mtime +3 -print0 2>/dev/null | while IFS= read -r -d '' f; do
|
while IFS= read -r -d '' f; do
|
||||||
fname=$(basename "$f" .json)
|
fname=$(basename "$f" .json)
|
||||||
# Todo filenames are like {session_id}-agent-{session_id}.json
|
# Todo filenames are like {session_id}-agent-{session_id}.json
|
||||||
for aid in $ACTIVE_IDS; do
|
for aid in $ACTIVE_IDS; do
|
||||||
@@ -116,7 +116,7 @@ for group_dir in "$SESSIONS_DIR"/*/; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
remove "$f"
|
remove "$f"
|
||||||
done
|
done < <(find "$todos_dir" -type f -mtime +3 -print0 2>/dev/null)
|
||||||
done
|
done
|
||||||
|
|
||||||
# --- Prune telemetry (>7 days, skip files named after active sessions) ---
|
# --- Prune telemetry (>7 days, skip files named after active sessions) ---
|
||||||
@@ -124,7 +124,7 @@ done
|
|||||||
for group_dir in "$SESSIONS_DIR"/*/; do
|
for group_dir in "$SESSIONS_DIR"/*/; do
|
||||||
telem_dir="$group_dir/.claude/telemetry"
|
telem_dir="$group_dir/.claude/telemetry"
|
||||||
[ -d "$telem_dir" ] || continue
|
[ -d "$telem_dir" ] || continue
|
||||||
find "$telem_dir" -type f -mtime +7 -print0 2>/dev/null | while IFS= read -r -d '' f; do
|
while IFS= read -r -d '' f; do
|
||||||
fname=$(basename "$f")
|
fname=$(basename "$f")
|
||||||
for aid in $ACTIVE_IDS; do
|
for aid in $ACTIVE_IDS; do
|
||||||
if [[ "$fname" == *"$aid"* ]]; then
|
if [[ "$fname" == *"$aid"* ]]; then
|
||||||
@@ -132,14 +132,14 @@ for group_dir in "$SESSIONS_DIR"/*/; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
remove "$f"
|
remove "$f"
|
||||||
done
|
done < <(find "$telem_dir" -type f -mtime +7 -print0 2>/dev/null)
|
||||||
done
|
done
|
||||||
|
|
||||||
# --- Prune group logs (>7 days) ---
|
# --- Prune group logs (>7 days) ---
|
||||||
|
|
||||||
find "$GROUPS_DIR"/*/logs -type f -mtime +7 -print0 2>/dev/null | while IFS= read -r -d '' f; do
|
while IFS= read -r -d '' f; do
|
||||||
remove "$f"
|
remove "$f"
|
||||||
done
|
done < <(find "$GROUPS_DIR"/*/logs -type f -mtime +7 -print0 2>/dev/null)
|
||||||
|
|
||||||
# --- Summary ---
|
# --- Summary ---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user