in sources/api/servicedog/src/main.rs [276:317]
fn parse_args(args: env::Args) -> Args {
let mut log_level = None;
let mut setting = None;
let mut systemd_unit = None;
let mut iter = args.skip(1);
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))
}));
}
"-s" | "--setting" => {
setting = Some(
iter.next()
.unwrap_or_else(|| usage_msg("Did not give argument to -s | --setting")),
)
}
"-u" | "--systemd-unit" => {
systemd_unit =
Some(iter.next().unwrap_or_else(|| {
usage_msg("Did not give argument to -u | --systemd-unit")
}))
}
_ => usage(),
}
}
Args {
log_level: log_level.unwrap_or_else(|| LevelFilter::Info),
setting: setting.unwrap_or_else(|| usage_msg("-s|--setting is a required argument")),
systemd_unit: systemd_unit
.unwrap_or_else(|| usage_msg("-u|--systemd-unit is a required argument")),
}
}