# shellcheck shell=dash

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

    local op="$1"; shift
    case "$op" in
        -i|--installed)     ___x_cmd_apt_ls___install         ;;
        -a|--all)           ___x_cmd_apt_ls___all             ;;

        -A|--available)     ___x_cmd_apt_ls___available       ;;
        -l|--local)         ___x_cmd_apt_ls___local           ;;
        --app)              ___x_cmd_apt_ls___app             ;;
        -h|--help)          ___x_cmd help -m apt ls           ;;
        *)                  ___x_cmd_apt___exec ls "$op" "$@" ;;
    esac
}

___x_cmd_apt_ls___install(){
    ___x_cmd_cmds apt list -i 2>/dev/null | ___x_cmd_cmds awk -F '/' 'NR>3{print $1}' | ___x_cmd_cmds sort
}

___x_cmd_apt_ls___all(){
    ___x_cmd_apt___lsraw
}

___x_cmd_apt_ls___app(){
    ___x_cmd_apt_ls___local
}

___x_cmd_apt_ls___local(){
    if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_manual ; then
        apt:info "Find installed software"
        local x=""
        ___X_CMD_PICK_SHBIN_CODE="xrc apt;" \
            ___x_cmd storeread_ ___x_cmd pick --width 40 --col 10 ___x_cmd_apt_ls___install
    else
        ___x_cmd_apt_ls___install
    fi
}

___x_cmd_apt_ls___available(){
    if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_manual ; then
        apt:info "Find installable software"
        local x_=""
        ___x_cmd_apt___lsraw_ || return $?
        local datafile="$x_"
        x_=; ___x_cmd storeread_ ___x_cmd pick --width 40 --col 10 --datafile "$datafile"
        # ___x_cmd_apt_install___app "$@"
    else
        ___x_cmd_apt_ls___all
    fi
}

___x_cmd_apt_la(){
    case "$1" in
        -h|--help) ___x_cmd help -m apt la ; return ;;
    esac
    ___x_cmd_apt_ls___available
}
