1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
use clap::clap_app;
use clap::App;
// TODO pull defaults from config file
// may require dropping the macros
fn mk_app<'a, 'b>() -> App<'a, 'b> {
clap_app!(so =>
(version: clap::crate_version!())
(author: clap::crate_authors!())
(about: clap::crate_description!())
(@arg site: -s --site +takes_value default_value("stackoverflow") "StackExchange site")
(@arg query: ... +required "Query to search")
)
}
fn main() {
let matches = mk_app().get_matches();
println!("{:?}", matches);
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_cli() {
let m = mk_app().get_matches_from(vec![
"so", "--site", "meta", "how", "do", "I", "exit", "Vim",
]);
println!("{:?}", m);
assert_eq!(m.value_of("site"), Some("meta"));
assert_eq!(
m.values_of("query").unwrap().collect::<Vec<_>>().join(" "),
"how do I exit Vim"
);
}
}
|