use crate::ported::commands::lint::{ArgAction, ArgParser, Argument};
pub fn get_argparser() -> ArgParser {
ArgParser {
description: "Daemon that improves powerline performance.".to_string(), arguments: vec![
Argument {
flags: vec!["--quiet".into(), "-q".into()],
action: ArgAction::StoreTrue,
metavar: None,
help: "Without other options: do not complain about already running \
powerline-daemon instance. \
Will still exit with 1. \
With `--kill' and `--replace': do not show any messages. \
With `--foreground': ignored. \
Does not silence exceptions in any case."
.to_string(),
},
Argument {
flags: vec!["--socket".into(), "-s".into()],
action: ArgAction::Store,
metavar: None,
help: "Specify socket which will be used for connecting to daemon.".to_string(),
},
Argument {
flags: vec!["--kill".into(), "-k".into()],
action: ArgAction::StoreTrue,
metavar: None,
help: "Kill an already running instance.".to_string(),
},
Argument {
flags: vec!["--foreground".into(), "-f".into()],
action: ArgAction::StoreTrue,
metavar: None,
help: "Run in the foreground (don\u{2019}t daemonize).".to_string(),
},
Argument {
flags: vec!["--replace".into(), "-r".into()],
action: ArgAction::StoreTrue,
metavar: None,
help: "Replace an already running instance.".to_string(),
},
],
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn daemon_parser_description_matches_upstream() {
let p = get_argparser();
assert_eq!(p.description, "Daemon that improves powerline performance.");
}
#[test]
fn daemon_parser_has_five_arguments() {
let p = get_argparser();
assert_eq!(p.arguments.len(), 5);
}
#[test]
fn daemon_parser_flag_set() {
let p = get_argparser();
let names: Vec<&str> = p
.arguments
.iter()
.flat_map(|a| a.flags.iter().map(|s| s.as_str()))
.collect();
assert!(names.contains(&"--quiet"));
assert!(names.contains(&"--socket"));
assert!(names.contains(&"--kill"));
assert!(names.contains(&"--foreground"));
assert!(names.contains(&"--replace"));
}
}