From: Thomas Karpiniec Date: Fri, 20 Jun 2025 05:08:46 +0000 (+1000) Subject: Change clap to use derive syntax X-Git-Url: https://code.octet-stream.net/m17rt/commitdiff_plain/dffe7046a9d0a6692f22564a34e8b4eb6f453503 Change clap to use derive syntax --- diff --git a/Cargo.lock b/Cargo.lock index f67d132..4800984 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -204,6 +204,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" dependencies = [ "clap_builder", + "clap_derive", ] [[package]] @@ -218,6 +219,18 @@ dependencies = [ "strsim", ] +[[package]] +name = "clap_derive" +version = "4.5.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "clap_lex" version = "0.7.4" @@ -373,6 +386,12 @@ version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hound" version = "3.5.1" diff --git a/tools/m17rt-netclient/Cargo.toml b/tools/m17rt-netclient/Cargo.toml index e78b89e..66c6e66 100644 --- a/tools/m17rt-netclient/Cargo.toml +++ b/tools/m17rt-netclient/Cargo.toml @@ -7,6 +7,6 @@ authors = ["Thomas Karpiniec , + #[arg( + short = 'o', + help = "Soundcard name for speaker, otherwise system default" + )] + output: Option, +} - let hostname = args.get_one::("hostname").unwrap(); - let port = args.get_one::("port").unwrap(); - let callsign = args.get_one::("callsign").unwrap(); - let reflector = args.get_one::("reflector").unwrap(); - let module = args.get_one::("module").unwrap(); - let input = args.get_one::("input"); - let output = args.get_one::("output"); +fn main() { + let args = Args::parse(); // It is current convention that mrefd requires the destination of transmissions to match the reflector. // If you are connected to "M17-XXX" on module B then you must set the dst to "M17-XXX B". // This requirement is likely to change but for the purposes of this test client we'll hard-code the // behaviour for the time being. - let ref_with_mod = format!("{} {}", reflector, module); + let ref_with_mod = format!("{} {}", args.reflector, args.module); let Ok(reflector) = M17Address::from_callsign(&ref_with_mod) else { println!( "Unable to create valid destination address for reflector + callsign '{ref_with_mod}'" @@ -84,22 +52,22 @@ fn main() { std::process::exit(1); }; - let mut tx = Codec2TxAdapter::new(callsign.clone(), reflector); - if let Some(input) = input { + let mut tx = Codec2TxAdapter::new(args.callsign.clone(), reflector); + if let Some(input) = args.input { tx.set_input_card(input); } let ptt = tx.ptt(); let mut rx = Codec2RxAdapter::new(); - if let Some(output) = output { + if let Some(output) = args.output { rx.set_output_card(output); } let config = ReflectorClientConfig { - hostname: hostname.clone(), - port: *port, - module: *module, - local_callsign: callsign.clone(), + hostname: args.hostname, + port: args.port, + module: args.module, + local_callsign: args.callsign, }; let tnc = ReflectorClientTnc::new(config, ConsoleStatusHandler); let app = M17App::new(tnc);