# shellcheck shell=dash
___x_cmd_qr___main(){
    [ "$#" -gt 0 ] ||   set - --help

    local op="${1}";    shift 1 ;
    case "$op" in
        -h|--help)      ___x_cmd help -m qr; return 1 ;;

        enc)            ___x_cmd_qr_enc             "$@" ;;
        dec)            ___x_cmd_qr_dec             "$@" ;;

        --|run)         ___x_cmd_qr___main_run      "$@" ;;
        *)              ___x_cmd_qr___main_run      "$op" "$@" ;;
    esac
}

___x_cmd___qr_origin(){
    ___x_cmd pkg xbin init qrencode  "___x_cmd___qr_origin" || return
    ___x_cmd___qr_origin "$@"
}

___x_cmd_qr_enc(){
    local clear=
    case "$1" in
        --clear)    shift 1;    clear=1 ;;
    esac
    {
        printf "\0337"
        ___x_cmd_qr_enc_default "$@"
        printf "%s" "Press enter to clear the code"

        local char; read -r char
        [ -z "$clear" ] || printf "\0338"
    } >/dev/tty
}

___x_cmd_qr_enc_default(){
    [ "$#" -gt 0 ] || N=qr M="Please provide data to encode, like a url or filepath" log:ret:64
    ___x_cmd___qr_origin -t utf8i "$@"
}

___x_cmd_qr_dec(){
    if [ -t 0 ]; then
        : qr decode from input stream
    else
        : qr decode file, output url
    fi
}

___x_cmd_qr___main_run(){
    case "$1" in
        # *://*|/*|@*)        ___x_cmd_qr_enc_default     "$1" ;;
        -)                  ___x_cmd_qr_enc_default     "$(___x_cmd_cmds_cat)"    ;;
        *)                  ___x_cmd_qr_enc_default     "$@" ;;
    esac
}
