#!/usr/bin/env bash
# site/permalinks -- set the URL structure and rebuild rewrite rules
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 site_m_permalinks)"

site_pick_domain "${1:-}" || exit $?
domain=$SITE_DOMAIN
root=$(nv_site_get "$domain" root_path "$(site_domain_root "$domain")")
user=$(site_web_user "$domain")
[ -f "$root/wp-config.php" ] || { ui_err "$(t wp_update_not_wp)"; exit 2; }
[ -x /usr/local/bin/wp ] || { ui_err "$(t site_wp_nocli)"; exit 1; }
WP="sudo -u $user /usr/local/bin/wp --path=$root"

cur=$($WP option get permalink_structure 2>/dev/null || echo '')
ui_kv "$(t perm_now)" "${cur:-$(t perm_plain)}"
ui_blank
ui_info "1) /%postname%/"
ui_info "2) /%year%/%monthnum%/%postname%/"
ui_info "3) $(t perm_plain)"
ui_info "0) $(t menu_back)"
ui_blank
printf '  %s: ' "$(t menu_prompt_short)"
read -r pick || exit 130

case $pick in
    0) exit 0 ;;
    1) struct='/%postname%/' ;;
    2) struct='/%year%/%monthnum%/%postname%/' ;;
    3) struct='' ;;
    *) ui_err "$(t menu_invalid)"; exit 2 ;;
esac

if $WP rewrite structure "$struct" --hard >/dev/null 2>&1 \
   && $WP rewrite flush --hard >/dev/null 2>&1; then
    nv_trace wp-permalinks "$domain ${struct:-plain}"
    ui_ok "$(t perm_done)"
else
    nv_fail 3505 "$(t perm_failed)"
    exit 1
fi
exit 0
