#!/usr/bin/env bash
# system/logrotate -- keep logs from filling the disk
set -o pipefail
SELF=$(readlink -f "${BASH_SOURCE[0]}")
NV_BASE=$(cd "$(dirname "$SELF")/../../.." && pwd)
export NV_BASE
# shellcheck source=/dev/null
. "$NV_BASE/lib/core/bootstrap.sh"

nv_require_root || exit 1
ui_header "$(t sys_m_logrotate)"

cfg=/etc/logrotate.d/nhanhvps
ui_kv "$(t backup_location)" "$cfg"
if [ -f "$cfg" ]; then
    ui_kv "$(t web_state)" "$(t state_enabled)"
    sed -n '1,20p' "$cfg" | sed 's/^/  /'
else
    ui_kv "$(t web_state)" "$(t state_disabled)"
fi
ui_blank

printf '  %s [14]: ' "$(t logrotate_keep_days)"
read -r days || exit 130
days=$(nv_trim "$days"); [ -z "$days" ] && days=14
case $days in ''|*[!0-9]*) ui_err "$(t ui_invalid_number)"; exit 2 ;; esac
[ "$days" -lt 1 ] && { ui_err "$(t backup_prune_min)"; exit 2; }

nv_backup_path "$cfg" logrotate >/dev/null 2>&1 || true
cat >"$cfg" <<EOF
# managed by nhanhvps
/var/log/nhanhvps/*.log {
    weekly
    rotate 8
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
}

/var/log/nginx/*.log {
    daily
    rotate $days
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        [ -f /run/nginx.pid ] && kill -USR1 \$(cat /run/nginx.pid) 2>/dev/null || true
    endscript
}
EOF
chmod 0644 "$cfg"

if nv_have logrotate; then
    if logrotate -d "$cfg" >/dev/null 2>&1; then
        ui_ok "$(t logrotate_ok "$days")"
    else
        ui_err "$(t logrotate_bad)"
        logrotate -d "$cfg" 2>&1 | tail -n 8 | sed 's/^/    /'
        exit 1
    fi
else
    ui_warn "$(t logrotate_missing)"
fi
nv_trace logrotate "nginx keep=${days}d"
exit 0
