feat(detmir): add rust-first operations tooling
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
AW_DATA_DIR="${AW_DATA_DIR:-/var/lib/activitywatch}"
|
||||
BACKUP_DIR="${AW_BACKUP_DIR:-${AW_DATA_DIR}/backups}"
|
||||
KEEP_DAYS="${AW_BACKUP_RETENTION_DAYS:-7}"
|
||||
KEEP_LAST_DB="${AW_BACKUP_KEEP_LAST_DB:-2}"
|
||||
KEEP_LAST_JSON="${AW_BACKUP_KEEP_LAST_JSON:-2}"
|
||||
|
||||
prune_group() {
|
||||
local keep_last="$1"
|
||||
local keep_days="$2"
|
||||
shift 2
|
||||
local files=()
|
||||
local idx=0
|
||||
local cutoff
|
||||
cutoff="$(date -d "-${keep_days} days" +%s)"
|
||||
mapfile -t files < <(find "$@" -maxdepth 1 -type f -printf '%T@ %p\n' 2>/dev/null | sort -nr | awk '{ $1=""; sub(/^ /,""); print }')
|
||||
for path in "${files[@]}"; do
|
||||
idx=$((idx + 1))
|
||||
if [ "$idx" -le "$keep_last" ]; then
|
||||
continue
|
||||
fi
|
||||
[ -f "$path" ] || continue
|
||||
if [ "$(stat -c %Y "$path")" -lt "$cutoff" ]; then
|
||||
rm -f -- "$path"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
prune_group "$KEEP_LAST_DB" "$KEEP_DAYS" "${BACKUP_DIR}/db"
|
||||
prune_group "$KEEP_LAST_JSON" "$KEEP_DAYS" "$BACKUP_DIR"
|
||||
|
||||
find /tmp -maxdepth 1 -type f \
|
||||
\( -name 'activitywatch-*.zip' -o -name 'hayabusa-*.zip' -o -name 'aw-hayabusa-profiles.txt' \) \
|
||||
-mtime +0 -delete 2>/dev/null || true
|
||||
|
||||
find /tmp -maxdepth 1 -type f \
|
||||
\( -name 'aw-worktime-ui-bridge.py' -o -name 'views-default.json' -o -name 'apply_webui_ru_patch.out' \) \
|
||||
-mtime +1 -delete 2>/dev/null || true
|
||||
Reference in New Issue
Block a user