
# shellcheck shell=dash

x log init xx
xrc:mod:lib     xx  fix/_index  next/_index \
                    continue    exec        autorecord

___x_cmd_xx___main(){
    local ___X_CMD_XX_LAST_ERRCODE=$?
    [ "$#" -gt 0 ] ||   set -- --continue

    local op="$1"; shift
    case "$op" in
        -f|--fix)           ___x_cmd_xx___fix         "$@" ;;
        -e|--exec)          ___x_cmd_xx___exec        "$@" ;;
        -n|--next)          ___x_cmd_xx___next        "$@" ;;
        --continue)         ___x_cmd_xx___continue    "$@" ;;

        --autorecord)       ___x_cmd_xx_autorecord    "$@" ;;

        *)                  ___x_cmd_xx___exec "$op"  "$@" ;;
    esac
}


___x_cmd_xx___execchoicelist(){
    local cmd=;
    cmd="$( ___x_cmd_xx___execchoicelist_app "$@" )" || return
    cmd="${cmd%%"    # "*}"
    [ -n "$cmd" ] || return
    xx:info --cmd "$cmd" "Execute command"
    eval "$cmd"
}

___x_cmd_xx___execchoicelist_app(){
    # TODO: in the future, provide a UI like tldr client
    local list="$1"
    local type="${2:-json}"
    [ -n "$list" ] || N=xx M="The choice list is empty" log:ret:1
    case "$type" in
        json)
            printf "%s\n" "$list" | ___x_cmd jo env .\* .cmd .desc -- 'printf "%s    # %s\n" "${cmd}" "${desc}"'
            ;;
        *)
            printf "%s\n" "$list"
            ;;
    esac | ___x_cmd pick --ask "Select the code you want to execute:" --width 100%
}
