
___x_cmd_lsof_run(){
    local format=auto
    local task=no
    while [ $# -gt 0 ]; do
        case "$1" in
            --app)          format=app  ;;
            --task)         task=yes    ;;
            --tsv|-t)       format=tsv  ;;
            --csv|-c)       format=csv  ;;
            --raw|-r)       format=raw  ;;
            --auto)         format=auto ;;
            *)              break ;;
        esac
        shift
    done

    ___x_cmd_lsof_run___"$format" "$@"
}

___x_cmd_lsof_run___auto(){
    if ___x_cmd_is_stdout2tty; then     ___x_cmd_lsof_run___app    "$@"
    else                                ___x_cmd_lsof_run___tsv    "$@"
    fi
}

___x_cmd_lsof_run___tsv(){
    # Consider using gawk to avoid towc error in macos awk.

    ___x_cmd_lsof_run___raw "$@" | \
        ___x_cmd_cmds awk -v task="$task" -f "$___X_CMD_ROOT_MOD/lsof/lib/awk/parse.awk" 2>/dev/null
}

___x_cmd_lsof_run___csv(){
    ___x_cmd_lsof_run___tsv "$@" | ___x_cmd tsv tocsv
}

___x_cmd_lsof_run___app(){
    lsof:info "Preparing data"
    ___x_cmd_lsof_run___csv "$@" | ___x_cmd csv app
}

___x_cmd_lsof_run___raw(){
    ___x_cmd ccmd 10m -- ___x_cmd_lsof___runmain "$@"
}

# ___X_CMD_LSOF_LAST="$___X_CMD_ROOT_DATA/lso/data.txt"

___x_cmd_lsof_run___prepare(){
    ___x_cmd ccmd 10m -- ___x_cmd_lsof___runmain "$@"
}
