in sources/api/thar-be-updates/src/main.rs [78:118]
fn parse_args(args: std::env::Args) -> Args {
let mut subcommand = None;
let mut log_level = None;
let mut socket_path = None;
let mut iter = args.skip(1).peekable();
while let Some(arg) = iter.next() {
match arg.as_ref() {
"--log-level" => {
let log_level_str = iter
.next()
.unwrap_or_else(|| usage_msg("Did not give argument to --log-level"));
log_level = Some(LevelFilter::from_str(&log_level_str).unwrap_or_else(|_| {
usage_msg(format!("Invalid log level '{}'", log_level_str))
}));
}
"--socket-path" => {
socket_path = Some(
iter.next()
.unwrap_or_else(|| usage_msg("Did not give argument to --socket-path")),
)
}
// Assume any arguments not prefixed with '-' is a subcommand
s if !s.starts_with('-') => {
if subcommand.is_some() {
usage();
}
subcommand =
Some(serde_plain::from_str::<UpdateCommand>(s).unwrap_or_else(|_| usage()));
}
_ => usage(),
}
}
Args {
subcommand: subcommand.unwrap_or_else(|| usage()),
log_level: log_level.unwrap_or_else(|| LevelFilter::Info),
socket_path: socket_path.unwrap_or_else(|| constants::API_SOCKET.to_string()),
}
}