# shellcheck shell=dash

___x_cmd_readablelink___main(){
    [ "$#" -gt 0 ] ||       set -- --help

    local op="$1";          shift
    case "$op" in
        -h|--help)          ___x_cmd help -m readablelink      "$@" ;      return 0 ;;

        get|get_|webfetch)
                            ___x_cmd_readablelink_"$op"        "$@" ;;
        *)                  ___x_cmd_readablelink_get    "$op" "$@" ;;
    esac
}

___x_cmd_readablelink_webfetch(){
    local url="$1"

    [ -n "$url" ]   ||  N=readablelink M="Please provide url" log:ret:1

    local x_
    ___x_cmd_readablelink_get_ "$url" || return 1

    # TODO: Add the chrome server header.
    ___x_cmd curl --fail -L -sq "$x_"
}


___x_cmd_readablelink_get(){
    local url="$1"

    [ -n "$url" ]   ||  N=readablelink M="Please provide url" log:ret:1

    local x_
    ___x_cmd_readablelink_get_ "$url" || return 1
    printf "%s\n" "$x_"
}

___x_cmd_readablelink_get_(){
    x_=""

    local hubservice=1
    while [ $# -gt 0 ]; do
        case "$1" in
            --nohub)            hubservice=0 ; shift ;;
            *)                  break ;;
        esac
    done

    local url="$1"

    ! ___x_cmd_readablelink_getsrc_ "$url" || return 0

    if [ "$hubservice" = 1 ] && ___x_cmd is login; then
        x_="$( ___x_cmd hub readablelink get "$url" )"
        read -r x_ <<A
$x_
A
        return $?       # 130, 0, 1
    fi

    return 1
}

___x_cmd_readablelink_getsrc_(){
    case "$1" in
        https://github.com/*)       ___x_cmd gh codeurl "$1" ;;
        https://codeberg.org/*)     ___x_cmd cb codeurl "$1" ;;
        https://gitee.com/*)        ___x_cmd gt codeurl "$1" ;;
        https://gitlab.com/*)       ___x_cmd gl codeurl "$1" ;;
        *)                          return 1 ;;
    esac
}
