# shellcheck shell=dash

___x_cmd log init nets

xrc:mod:lib     nets   update   view

___x_cmd_nets___main(){
    [ "$#" -gt 0 ] ||   set -- view

    local op="$1";      shift
    case "$op" in
        -h|--help)      ___x_cmd help -m nets           "$@";    return 0 ;;
        --|--runmain)   ___x_cmd_nets___runmain         "$@" ;;

        convert)        ___x_cmd_nets_convert           "$@" ;;

        u|update)       ___x_cmd_nets_update            "$@" ;;
        v|view)         ___x_cmd_nets_view              "$@" ;;

        ls)             ___x_cmd_nets_ls                "$@" ;;

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

___X_CMD_NETS_DATA="$___X_CMD_ROOT_DATA/nets/data"

___x_cmd_nets_convert(){
    local datadir="${1:-"$___X_CMD_NETS_DATA/latest"}"
    ___x_cmd mkdirp "$datadir"
    datadir="${datadir}" ___x_cmd awk \
        -f "$___X_CMD_ROOT_MOD/nets/lib/awk/convert.awk" <"$datadir/all"
}

___x_cmd_nets_ls(){
    case "$1" in
        -h|--help)      ___x_cmd help -m nets ls  "$@";    return 0 ;;
    esac

    local datadir="${1:-"$___X_CMD_NETS_DATA/latest"}"
    ___x_cmd_nets___checkdata "$datadir" || return $?

    [ -d "$datadir" ] || N=nets M="The directory does not exist" log:ret:1
    ___x_cmd fsiter "$datadir" | ___x_cmd_cmds grep -v all
    printf "route\n"
}

___x_cmd_nets___checkdata(){
    local datadir="${1:-"$___X_CMD_NETS_DATA/latest"}"
    ___x_cmd_nets_exist "$datadir" || {
        if ___x_cmd_is_stdout2tty; then
            ___x_cmd ui yesno "No data found. Trigger the data collection using 'x nets update' ?" || return $?
            ___x_cmd_nets_update || return $?
        else
            nets:info --hint 'x nets update' "No data collected. You need to trigger using command: x nets update"
            return 1
        fi
    }
}
