From 08464dbb8192939211acbf95e8eba604ba5fc181 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 13 Jan 2023 14:27:43 +0100 Subject: Move argument parsing to top, to panic early Signed-off-by: Matthias Beyer --- src/bin/cloudmqtt-test-client.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/bin/cloudmqtt-test-client.rs b/src/bin/cloudmqtt-test-client.rs index 9265aa0..7d38041 100644 --- a/src/bin/cloudmqtt-test-client.rs +++ b/src/bin/cloudmqtt-test-client.rs @@ -47,13 +47,6 @@ enum Command { #[tokio::main] async fn main() { - let (client_duplex, server_duplex) = tokio::io::duplex(512); - - let (mut read_dup, mut write_dup) = tokio::io::split(server_duplex); - - tokio::spawn(async move { tokio::io::copy(&mut tokio::io::stdin(), &mut write_dup).await }); - tokio::spawn(async move { tokio::io::copy(&mut read_dup, &mut tokio::io::stdout()).await }); - let args = { std::env::args() .skip(1) @@ -64,6 +57,13 @@ async fn main() { .expect("Parsing Arguments failed") }; + let (client_duplex, server_duplex) = tokio::io::duplex(512); + + let (mut read_dup, mut write_dup) = tokio::io::split(server_duplex); + + tokio::spawn(async move { tokio::io::copy(&mut tokio::io::stdin(), &mut write_dup).await }); + tokio::spawn(async move { tokio::io::copy(&mut read_dup, &mut tokio::io::stdout()).await }); + let client = MqttClient::connect_v3_duplex( client_duplex, MqttConnectionParams { -- cgit v1.2.3 From a2042408ea2771d137ecbc7a8de11c80f784626c Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Mon, 16 Jan 2023 09:47:46 +0100 Subject: Fix: Make sure CLI error is properly printed before exiting Signed-off-by: Matthias Beyer --- src/bin/cloudmqtt-test-client.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/bin/cloudmqtt-test-client.rs b/src/bin/cloudmqtt-test-client.rs index 7d38041..e21f554 100644 --- a/src/bin/cloudmqtt-test-client.rs +++ b/src/bin/cloudmqtt-test-client.rs @@ -48,13 +48,19 @@ enum Command { #[tokio::main] async fn main() { let args = { - std::env::args() + match std::env::args() .skip(1) .collect::() .split("----") .map(|els| Args::try_parse_from(els.split(' '))) .collect::, _>>() - .expect("Parsing Arguments failed") + { + Ok(args) => args, + Err(e) => { + eprintln!("{}", e); + exit(1) + } + } }; let (client_duplex, server_duplex) = tokio::io::duplex(512); -- cgit v1.2.3 From 99a0e80c89079302e1582f560ebc91dcc2e0acba Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Mon, 16 Jan 2023 09:59:44 +0100 Subject: Fix: Make command optional Signed-off-by: Matthias Beyer --- src/bin/cloudmqtt-test-client.rs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/bin/cloudmqtt-test-client.rs b/src/bin/cloudmqtt-test-client.rs index e21f554..8f58159 100644 --- a/src/bin/cloudmqtt-test-client.rs +++ b/src/bin/cloudmqtt-test-client.rs @@ -25,7 +25,7 @@ fn print_error_and_quit(e: String) -> ! { #[derive(clap::Parser, Debug)] struct Args { #[command(subcommand)] - command: Command, + command: Option, } #[derive(clap::Subcommand, Debug)] @@ -100,25 +100,25 @@ async fn main() { for arg in args { match arg.command { - Command::Quit => {} - Command::Subscribe { topic } => { + Some(Command::Quit) => {} + Some(Command::Subscribe { topic }) => { let subscription_requests = [MSubscriptionRequest { topic: MString { value: &topic }, qos: MQualityOfService::AtMostOnce, // TODO }]; client.subscribe(&subscription_requests).await.unwrap(); } - Command::SendToTopic { + Some(Command::SendToTopic { topic: _, qos: _, message: _, - } => { + }) => { unimplemented!() } - Command::ExpectOnTopic { + Some(Command::ExpectOnTopic { topic: expected_topic, qos: expected_qos, - } => { + }) => { let packet = match packet_stream.next().await { Some(Ok(packet)) => packet, None => { @@ -153,6 +153,10 @@ async fn main() { break; } } + + None => { + // no command, doing nothing + } } } } -- cgit v1.2.3