#!/bin/bash borgForgetApp() { local idx="$1" local app_name="$2" if resticLocationAppendOnly "$idx"; then isNotice "$(resticLocationName "$idx") is append-only — skipping forget for $app_name" return 0 fi local keep_last keep_daily keep_weekly keep_monthly keep_yearly keep_last=$(resticRetentionFor "$idx" KEEP_LAST) keep_daily=$(resticRetentionFor "$idx" KEEP_DAILY) keep_weekly=$(resticRetentionFor "$idx" KEEP_WEEKLY) keep_monthly=$(resticRetentionFor "$idx" KEEP_MONTHLY) keep_yearly=$(resticRetentionFor "$idx" KEEP_YEARLY) borgEnvExport "$idx" || return 1 local host_tag="${CFG_INSTALL_NAME:-libreportal}" local args=(prune --glob-archives "${app_name}-${host_tag}-*") [[ -n "$keep_last" ]] && args+=(--keep-last "$keep_last") [[ -n "$keep_daily" ]] && args+=(--keep-daily "$keep_daily") [[ -n "$keep_weekly" ]] && args+=(--keep-weekly "$keep_weekly") [[ -n "$keep_monthly" ]] && args+=(--keep-monthly "$keep_monthly") [[ -n "$keep_yearly" ]] && args+=(--keep-yearly "$keep_yearly") isNotice "Applying retention for $app_name on $(resticLocationName "$idx")" runBackupOp borg "${args[@]}" local rc=$? if [[ "$CFG_BACKUP_PRUNE_AFTER_FORGET" == "true" && $rc -eq 0 ]]; then runBackupOp borg compact fi borgEnvUnset return $rc }