# shellcheck shell=dash

___x_cmd_stat___exec(){
    local fmt=app;

    while [ $# -gt 0 ]; do
        case "$1" in
            -j|--json)     fmt=json   ;;
            -t|--tsv)      fmt=tsv    ;;
            -c|--csv)      fmt=csv    ;;
            --app)         fmt=app    ;;
            *)             break      ;;
        esac
        shift
    done

    [ $# -gt 0  ]   ||  set -- .* *
    "___x_cmd_stat___exec___${fmt}" "$@"
}


___x_cmd_stat___exec___app(){
    if ___x_cmd_is_stdout2tty; then
        ___x_cmd_stat___exec___app0     "$@"
    else
        ___x_cmd_stat___exec___tsv      "$@"
    fi
}

___x_cmd_stat___exec___dump(){
    local x_=;
    x os name_

    case "$x_" in
        darwin)
            ___x_cmd_stat___execraw "$@" \
                | ___x_cmd_cmds awk -f "$___X_CMD_ROOT_MOD/stat/lib/awk/stat_bsd.awk"
            ;;
        *)
            ___x_cmd_stat___execraw "$@" \
                | ___x_cmd_cmds awk -f "$___X_CMD_ROOT_MOD/stat/lib/awk/stat_busybox.awk"
            ;;
    esac
}

___x_cmd_stat___exec___tsv(){
    ___x_cmd_stat___execraw "$@" | ___x_cmd_cmds awk    -v SEP="\t"     -f "$___X_CMD_ROOT_MOD/stat/lib/awk/stat_csv.awk"
}

___x_cmd_stat___exec___csv(){
    ___x_cmd_stat___execraw "$@" | ___x_cmd_cmds awk    -v SEP=","      -f "$___X_CMD_ROOT_MOD/stat/lib/awk/stat_csv.awk"
}

___x_cmd_stat___exec___json(){
    ___x_cmd_stat___exec___csv "$@" | ___x_cmd csv tojson
}

___x_cmd_stat___exec___raw(){
    ___x_cmd_stat___execraw "$@"
}


___x_cmd_stat___exec___app0(){
    local ___X_CMD_CSV_APP_DATA_name=
    local ___X_CMD_CSV_APP_DATA_size=
    local ___X_CMD_CSV_APP_DATA_uid=
    local ___X_CMD_CSV_APP_DATA_acc=
    local ___X_CMD_CSV_APP_DATA_gid=
    local ___X_CMD_CSV_APP_DATA_type=
    local ___X_CMD_CSV_APP_DATA_perm=
    local ___X_CMD_CSV_APP_DATA_modify=
    local ___X_CMD_CSV_APP_DATA_create=


    ___X_CMD_CSV_APP_SHBIN_CODE="xrc stat"  \
    ___x_cmd csv app --clear --return var   \
        ___x_cmd_stat___exec___csv "$@"

    [ -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:"     \
        "dump all information of the selected result"           \
        "dump all result"                                       \
        "Exit"

    case "$id" in
        1)      ___x_cmd_stat___exec___dump "$name" ;;
        2)      ___x_cmd_stat___exec___dump "$@"    ;;
        *)      return
    esac
    # if directory, cd
    # Show all information of the selected item
}
