# shellcheck shell=dash

___x_cmd log init host

xrc:mod:lib     host        cat

___x_cmd_host___main(){
    [ "$#" -gt 0 ] ||   set -- app

    local op="$1";      shift
    case "$op" in
        # TODO: tag|is) ;;
        cat|fz|app|ed|get)
            "___x_cmd_host_${op}" "$@"    ;;
        -h|--help)
                x help -m host "$@" >&2
                return 64               ;;
        *)
            N=host M="unsupported subcmd ==> $op" log:ret:64 ;;
    esac
}

___X_CMD_HOST_FILEPATH="/etc/hosts"
if [ -n "$MSYS" ]; then
    ___X_CMD_HOST_FILEPATH="/C/Windows/System32/drivers/etc/hosts"
fi


___x_cmd_host_get(){
    <"$___X_CMD_HOST_FILEPATH" \
    ___x_cmd_cmds_awk -v host_key="$1" \
    '
        NF == 0   { next; }
        $1 ~ "^#" { next; }
        ($2==host_key){
            print $1;
        }
    '
}

___x_cmd_host_modify(){
    host:debug "Backup the host file"
    x bakman backup "$___X_CMD_HOST_FILEPATH"
    host:warn "Changing host file require priviledge."
    x sudo tee "$___X_CMD_HOST_FILEPATH" >/dev/null <<A
$1
A
}

___x_cmd_host_ed(){
    local IFS=" "

    local data
    data="$(___x_cmd_cmds_awk     \
        -v args="$*"        \
        -f "$___X_CMD_ROOT_MOD/host/lib/ed.awk" <"$___X_CMD_HOST_FILEPATH")" \
        || return 0 # unchanged

    ___x_cmd_host_modify "$data"
}
