driver_tools/subcommands/node/
mod.rs1pub mod args;
6pub mod common;
7
8pub mod subcommands;
9
10use anyhow::{Context, Result};
11use args::{NodeCommand, NodeSubcommand};
12use fidl_fuchsia_driver_development as fdd;
13use std::io::Write;
14
15pub async fn node(
16 cmd: NodeCommand,
17 writer: &mut dyn Write,
18 driver_development_proxy: fdd::ManagerProxy,
19) -> Result<()> {
20 match cmd.subcommand {
21 NodeSubcommand::List(subcmd) => {
22 subcommands::list::list_node(subcmd, writer, driver_development_proxy)
23 .await
24 .context("List subcommand failed")?;
25 }
26 NodeSubcommand::Show(subcmd) => {
27 subcommands::show::show_node(subcmd, writer, driver_development_proxy)
28 .await
29 .context("Show subcommand failed")?;
30 }
31 NodeSubcommand::Add(ref subcmd) => {
32 subcommands::add::add_node(subcmd, driver_development_proxy)
33 .await
34 .context("Add subcommand failed")?;
35 }
36 NodeSubcommand::Remove(ref subcmd) => {
37 subcommands::remove::remove_node(subcmd, driver_development_proxy)
38 .await
39 .context("Remove subcommand failed")?;
40 }
41 NodeSubcommand::Graph(subcmd) => {
42 subcommands::graph::graph_node(subcmd, writer, driver_development_proxy)
43 .await
44 .context("Graph subcommand failed")?;
45 }
46 };
47 Ok(())
48}
49
50pub async fn node_machine(
51 cmd: &NodeCommand,
52 driver_development_proxy: &fdd::ManagerProxy,
53) -> Result<Option<serde_json::Value>> {
54 match &cmd.subcommand {
55 NodeSubcommand::List(subcmd) => {
56 let nodes = subcommands::list::get_nodes(subcmd, driver_development_proxy).await?;
57 Ok(Some(serde_json::to_value(&nodes)?))
58 }
59 NodeSubcommand::Show(subcmd) => {
60 let details =
61 subcommands::show::get_node_details(subcmd, driver_development_proxy).await?;
62 Ok(Some(serde_json::to_value(&details)?))
63 }
64 _ => Ok(None),
65 }
66}