# shellcheck shell=dash

___x_cmd_dns_reload___nmcli(){
    local conn="$1"

    if [ "${___X_CMD_DNS_DRY_RUN:-0}" = 1 ]; then
        dns:info "[dry-run] sudo nmcli connection reload"
        [ -n "$conn" ] && dns:info "[dry-run] sudo nmcli connection up \"$conn\""
        return
    fi

    dns:info "Executing: nmcli connection reload"
    ___x_cmd sudo nmcli connection reload \
        || dns:warn "nmcli connection reload failed"

    if [ -n "$conn" ]; then
        dns:info "Executing: nmcli connection up $conn"
        ___x_cmd sudo nmcli connection up "$conn" \
            || dns:warn "nmcli connection up $conn failed"
    fi
}

___x_cmd_dns_reload___linux(){
    if ! ___x_cmd hascmd nmcli; then
        dns:warn "nmcli not found; cannot reload NetworkManager config"
        return
    fi

    if [ "${___X_CMD_DNS_DRY_RUN:-0}" = 1 ]; then
        dns:info "[dry-run] sudo nmcli connection reload"
    else
        dns:info "Executing: nmcli connection reload"
        ___x_cmd sudo nmcli connection reload \
            || dns:warn "nmcli connection reload failed"
    fi
}

___x_cmd_dns_reload___darwin(){
    if [ "${___X_CMD_DNS_DRY_RUN:-0}" = 1 ]; then
        dns:info "[dry-run] sudo killall -HUP mDNSResponder"
    else
        dns:info "Executing: sudo killall -HUP mDNSResponder"
        ___x_cmd sudo killall -HUP mDNSResponder 2>/dev/null \
            || dns:warn "killall -HUP mDNSResponder failed"
    fi
}

___x_cmd_dns_reload___win(){
    :
}

___x_cmd_dns_reload___run(){
    local quiet=0
    case "$1" in
        -q|--quiet) quiet=1; shift ;;
    esac

    [ "$quiet" = 1 ] || dns:info "Reloading DNS configuration"

    local x_
    ___x_cmd os name_
    case "$x_" in
        linux)      ___x_cmd_dns_reload___linux  ;;
        darwin)     ___x_cmd_dns_reload___darwin ;;
        win)        ___x_cmd_dns_reload___win    ;;
        *)          dns:warn "Unsupported os for reload ==> $x_" ;;
    esac
}

___x_cmd_dns_reload(){
    case "$1" in
        -h|--help) ___x_cmd help -m dns reload; return 0 ;;
    esac
    [ $# -eq 0 ] || {
        N=dns M="Usage: x dns reload" log:ret:64
    }
    ___x_cmd_dns_reload___run
}
