#!/usr/bin/env bash
# system/cron -- every schedule nhanhvps owns, in one place
#
# Disabling renames the file to *.disabled instead of deleting it, so nothing is
# lost and re-enabling is a single rename.
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_cron)"

dir=$(cron_dir)
mapfile -t entries < <(find "$dir" -maxdepth 1 -name 'nhanhvps*' -printf '%f\n' 2>/dev/null | sort)

if [ ${#entries[@]} -eq 0 ]; then
    ui_info "$(t sys_cron_none)"
    exit 0
fi

i=0
for e in "${entries[@]}"; do
    i=$((i + 1))
    state=$(t state_enabled)
    case $e in *.disabled) state=$(t state_disabled) ;; esac
    sched=$(grep -hoE '^[0-9*/, -]+ [0-9*/, -]+ [0-9*/, -]+ [0-9*/, -]+ [0-9*/, -]+' "$dir/$e" 2>/dev/null | head -n 1)
    printf '  %2d) %-32s %-12s %s\n' "$i" "$e" "$state" "${sched:--}"
done
printf '  %2d) %s\n' 0 "$(t menu_back)"
ui_blank

printf '  %s: ' "$(t sys_cron_prompt)"
read -r pick || exit 130
case $pick in ''|*[!0-9]*) ui_err "$(t ui_invalid_number)"; exit 2 ;; esac
[ "$pick" -eq 0 ] && exit 0
[ "$pick" -lt 1 ] || [ "$pick" -gt ${#entries[@]} ] && { ui_err "$(t menu_invalid)"; exit 2; }

entry=${entries[$((pick - 1))]}
case $entry in
    *.disabled)
        target=${entry%.disabled}
        mv "$dir/$entry" "$dir/$target" || { nv_fail 6107 "$(t sys_cron_failed)"; exit 1; }
        nv_trace cron "enable $target"
        ui_ok "$(t sys_cron_enabled "$target")"
        ;;
    *)
        target="$entry.disabled"
        mv "$dir/$entry" "$dir/$target" || { nv_fail 6107 "$(t sys_cron_failed)"; exit 1; }
        nv_trace cron "disable $entry"
        ui_ok "$(t sys_cron_disabled "$entry")"
        ;;
esac
exit 0
