use super::aggregation::cmd_aggregation;
use super::ap_isolation::cmd_ap_isolation;
use super::bridge_loop_avoidance::cmd_bridge_loop_avoidance;
use super::gateways::cmd_gateways;
use super::gw_mode::cmd_gw_mode;
use super::interface::cmd_interfaces;
use super::neighbors::cmd_neighbors;
use super::originators::cmd_originators;
use super::routing_algo::cmd_routing_algo;
use super::transglobal::cmd_transglobal;
use super::translocal::cmd_translocal;
use clap::{Arg, Command};
pub fn build_cli() -> Command {
Command::new("robctl")
.arg_required_else_help(true)
.about("Rust implementation of batctl, B.A.T.M.A.N. advanced control tool")
.arg(
Arg::new("meshif")
.long("meshif")
.short('m')
.value_name("IFACE")
.help("Batman-adv mesh interface to operate on (default: bat0)"),
)
.arg(
Arg::new("version")
.short('v')
.long("version")
.help("Print robctl version and batman-adv module version (if loaded)")
.action(clap::ArgAction::SetTrue),
)
.subcommand(cmd_neighbors())
.subcommand(cmd_gateways())
.subcommand(cmd_gw_mode())
.subcommand(cmd_originators())
.subcommand(cmd_translocal())
.subcommand(cmd_transglobal())
.subcommand(cmd_interfaces())
.subcommand(cmd_ap_isolation())
.subcommand(cmd_aggregation())
.subcommand(cmd_bridge_loop_avoidance())
.subcommand(cmd_routing_algo())
}