-fn main() {
- let args = clap::Command::new("m17rt-netclient")
- .arg(
- Arg::new("hostname")
- .long("hostname")
- .short('s')
- .required(true)
- .help("Domain or IP of reflector"),
- )
- .arg(
- Arg::new("port")
- .long("port")
- .short('p')
- .value_parser(value_parser!(u16))
- .default_value("17000")
- .help("Reflector listening port"),
- )
- .arg(
- Arg::new("callsign")
- .long("callsign")
- .short('c')
- .value_parser(valid_callsign)
- .required(true)
- .help("Your callsign for reflector registration and transmissions"),
- )
- .arg(
- Arg::new("reflector")
- .long("reflector")
- .short('r')
- .value_parser(valid_callsign)
- .required(true)
- .help("Reflector designator/callsign, often starting with 'M17-'"),
- )
- .arg(
- Arg::new("module")
- .long("module")
- .short('m')
- .value_parser(valid_module)
- .required(true)
- .help("Module to connect to (A-Z)"),
- )
- .arg(
- Arg::new("input")
- .long("input")
- .short('i')
- .help("Soundcard name for microphone, otherwise system default"),
- )
- .arg(
- Arg::new("output")
- .long("output")
- .short('o')
- .help("Soundcard name for speaker, otherwise system default"),
- )
- .get_matches();
+#[derive(Parser)]
+struct Args {
+ #[arg(short = 's', help = "Domain or IP of reflector")]
+ hostname: String,
+ #[arg(
+ short = 'p',
+ default_value = "17000",
+ help = "Reflector listening port"
+ )]
+ port: u16,
+ #[arg(short = 'c', value_parser = valid_callsign, help = "Your callsign for reflector registration and transmissions")]
+ callsign: M17Address,
+ #[arg(short = 'r', value_parser = valid_callsign, help = "Reflector designator/callsign, often starting with 'M17-'")]
+ reflector: M17Address,
+ #[arg(short = 'm', value_parser = valid_module, help = "Module to connect to (A-Z)")]
+ module: char,
+ #[arg(
+ short = 'i',
+ help = "Soundcard name for microphone, otherwise system default"
+ )]
+ input: Option<String>,
+ #[arg(
+ short = 'o',
+ help = "Soundcard name for speaker, otherwise system default"
+ )]
+ output: Option<String>,
+}