diff options
Diffstat (limited to 'crates/core/tedge/src/cli/mod.rs')
-rw-r--r-- | crates/core/tedge/src/cli/mod.rs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/crates/core/tedge/src/cli/mod.rs b/crates/core/tedge/src/cli/mod.rs new file mode 100644 index 00000000..d54dacee --- /dev/null +++ b/crates/core/tedge/src/cli/mod.rs @@ -0,0 +1,50 @@ +use crate::command::{BuildCommand, BuildContext, Command}; +use structopt::clap; +use structopt::StructOpt; + +mod certificate; +mod config; +mod connect; +mod disconnect; +mod mqtt; + +#[derive(StructOpt, Debug)] +#[structopt( + name = clap::crate_name!(), + version = clap::crate_version!(), + about = clap::crate_description!() +)] +pub struct Opt { + #[structopt(subcommand)] + pub tedge: TEdgeOpt, +} + +#[derive(StructOpt, Debug)] +pub enum TEdgeOpt { + /// Create and manage device certificate + Cert(certificate::TEdgeCertCli), + + /// Configure Thin Edge. + Config(config::ConfigCmd), + + /// Connect to connector provider + Connect(connect::TEdgeConnectOpt), + + /// Remove bridge connection for a provider + Disconnect(disconnect::TEdgeDisconnectBridgeCli), + + /// Publish a message on a topic and subscribe a topic. + Mqtt(mqtt::TEdgeMqttCli), +} + +impl BuildCommand for TEdgeOpt { + fn build_command(self, context: BuildContext) -> Result<Box<dyn Command>, crate::ConfigError> { + match self { + TEdgeOpt::Cert(opt) => opt.build_command(context), + TEdgeOpt::Config(opt) => opt.build_command(context), + TEdgeOpt::Connect(opt) => opt.build_command(context), + TEdgeOpt::Disconnect(opt) => opt.build_command(context), + TEdgeOpt::Mqtt(opt) => opt.build_command(context), + } + } +} |