summaryrefslogtreecommitdiffstats
path: root/crates/core/tedge/src/cli/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/core/tedge/src/cli/mod.rs')
-rw-r--r--crates/core/tedge/src/cli/mod.rs50
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),
+ }
+ }
+}