# shellcheck shell=dash

___x_cmd_prta_ls(){
    [ $# -gt 0 ]    ||      set -- --auto
    local fmt=auto

    while [ $# -gt 0 ]; do
        case "$1" in
            -j|--json)      fmt=json;        shift   ;;
            -c|--csv)       fmt=csv;         shift   ;;
            --auto|--app)   fmt="${1#--}";   shift   ;;

            -h|--help)      ___x_cmd help -m prta ls;          return      ;;
            *)              N="prta" M="Unkown options ==> $1" log:ret:64  ;;
        esac
    done

    ___x_cmd_prta_ls___"$fmt" "$@"
}

___x_cmd_prta_ls___auto(){
    if      ___x_cmd_is_stdout2tty; then        ___x_cmd_prta_ls___app
    else                                        ___x_cmd_prta_ls___csv
    fi
}

___x_cmd_prta_ls___app(){
    local ___X_CMD_CSV_APP_DATA_name
    local ___X_CMD_CSV_APP_DATA_arch
    local ___X_CMD_CSV_APP_DATA_icon
    local ___X_CMD_CSV_APP_DATA_fullname
    local ___X_CMD_CSV_APP_DATA_description

    ___X_CMD_CSV_APP_SHBIN_CODE="xrc prta; " \
        ___x_cmd csv app --return var --clear ___x_cmd_prta_ls___csv || return 1
    [ -n "$___X_CMD_CSV_APP_DATA_name" ] || return 0
    local name="$___X_CMD_CSV_APP_DATA_name"

    local id=
    ___x_cmd ui select id "Next:"               \
        "Install software          '$name'"     \
        "Show software information '$name'"     \
        "EXIT"  || return
    case "$id" in
        1)      prta:info "Run command -> proot-apps install $name"
                ___x_cmd_prta___run install "$name"
                ;;
        2)      prta:info "Run command -> proot-apps get $name"
                ___x_cmd_prta___run get "$name"
                ;;
        *)      return 0
                ;;
    esac

}

___x_cmd_prta_ls___csv(){
    ___x_cmd_prta_ls___json \
        | ___x_cmd ja 2c            .name .description .arch .full_name  .icon \
        | ___x_cmd csv header --add  name  description  arch  fullname    icon
}

___x_cmd_prta_ls___json(){
    ___x_cmd_prta_ls___raw | ___x_cmd y2j | ___x_cmd jq .include
}

___x_cmd_prta_ls___raw(){
    local ___X_CMD_PRTA_FP_META="$___X_CMD_ROOT_DATA/prta/metadata.yml"
    [ -f "$___X_CMD_PRTA_FP_META" ] || {
        ___x_cmd httpget gitx x-cmd-sourcecode proot-apps master metadata/metadata.yml "$___X_CMD_PRTA_FP_META" || return 1
    }
    ___x_cmd_cmds_cat "$___X_CMD_PRTA_FP_META"
}
