driver_tools/
args.rs

1// Copyright 2022 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5use super::subcommands::disable::args::DisableCommand;
6use super::subcommands::dump::args::DumpCommand;
7use super::subcommands::host::args::HostCommand;
8use super::subcommands::list::args::ListCommand;
9use super::subcommands::list_composite_node_specs::args::ListCompositeNodeSpecsCommand;
10use super::subcommands::list_composites::args::ListCompositesCommand;
11use super::subcommands::list_devices::args::ListDevicesCommand;
12use super::subcommands::list_hosts::args::ListHostsCommand;
13use super::subcommands::node::args::NodeCommand;
14use super::subcommands::register::args::RegisterCommand;
15use super::subcommands::restart::args::RestartCommand;
16use super::subcommands::test_node::args::TestNodeCommand;
17use argh::{ArgsInfo, FromArgs};
18
19#[cfg(not(target_os = "fuchsia"))]
20use static_checks_lib::args::StaticChecksCommand;
21
22#[derive(ArgsInfo, FromArgs, Debug, PartialEq)]
23#[argh(name = "driver", description = "Support driver development workflows")]
24pub struct DriverCommand {
25    /// if this exists, the user will be prompted for a component to select.
26    #[argh(switch, short = 's', long = "select")]
27    pub select: bool,
28
29    #[argh(subcommand)]
30    pub subcommand: DriverSubCommand,
31}
32
33#[cfg(target_os = "fuchsia")]
34#[derive(ArgsInfo, FromArgs, Debug, PartialEq)]
35#[argh(subcommand)]
36pub enum DriverSubCommand {
37    Disable(DisableCommand),
38    Dump(DumpCommand),
39    List(ListCommand),
40    ListComposites(ListCompositesCommand),
41    ListDevices(ListDevicesCommand),
42    ListHosts(ListHostsCommand),
43    ListCompositeNodeSpecs(ListCompositeNodeSpecsCommand),
44    Register(RegisterCommand),
45    Restart(RestartCommand),
46    TestNode(TestNodeCommand),
47    // New and improved driver commands.
48    Node(NodeCommand),
49    Host(HostCommand),
50}
51
52// TODO(https://fxbug.dev/324167674): fix.
53#[allow(clippy::large_enum_variant)]
54#[cfg(not(target_os = "fuchsia"))]
55#[derive(ArgsInfo, FromArgs, Debug, PartialEq)]
56#[argh(subcommand)]
57pub enum DriverSubCommand {
58    Disable(DisableCommand),
59    Dump(DumpCommand),
60    List(ListCommand),
61    ListComposites(ListCompositesCommand),
62    ListDevices(ListDevicesCommand),
63    ListHosts(ListHostsCommand),
64    ListCompositeNodeSpecs(ListCompositeNodeSpecsCommand),
65    Register(RegisterCommand),
66    Restart(RestartCommand),
67    StaticChecks(StaticChecksCommand),
68    TestNode(TestNodeCommand),
69    // New and improved driver commands.
70    Node(NodeCommand),
71    Host(HostCommand),
72}