summaryrefslogtreecommitdiffstats
path: root/src/main.rs
blob: 45788c496f91a530b5a25cb922586011294614f3 (plain)
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"
        );
    }
}