#!/bin/bash resticForgetApp() { 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) resticEnvExport "$idx" || return 1 local args=(forget --tag "app=$app_name" --group-by tags,host) [[ -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") [[ "$CFG_BACKUP_PRUNE_AFTER_FORGET" == "true" ]] && args+=(--prune) isNotice "Applying retention for $app_name on $(resticLocationName "$idx")" sudo -E -u "$docker_install_user" restic "${args[@]}" local rc=$? resticEnvUnset return $rc } resticRetentionFor() { local idx="$1" local field="$2" if [[ "$(resticLocationField "$idx" CUSTOM_RETENTION)" == "true" ]]; then local override override=$(resticLocationField "$idx" "$field") if [[ -n "$override" ]]; then echo "$override" return fi fi local global_var="CFG_BACKUP_${field}" echo "${!global_var}" } resticForgetAppAllLocations() { local app_name="$1" local idx while IFS= read -r idx; do [[ -z "$idx" ]] && continue resticForgetApp "$idx" "$app_name" done < <(resticEnabledLocations) }