1use std::env;
2use std::str::FromStr;
3use std::env::Args;
4
5pub struct Config {
6 pub query: String,
7 pub filename: String,
8 pub case_sensitive: bool,
9}
10
11impl Config {
12 pub fn new(mut args: Args) -> Result<Config, &'static str> {
13 args.next();
14
15 let query = match args.next() {
16 Some(arg) => arg,
17 None => return Err("Didn't get a query string"),
18 };
19
20 let filename = match args.next() {
21 Some(arg) => arg,
22 None => return Err("Didn't get a file name"),
23 };
24
25 let case_sensitive = env::var("CASE_INSENSITIVE").is_err();
26 Ok(Config { query, filename,case_sensitive })
27 }
28}
29
30pub fn parse_args() -> Result<Config, &'static str> {
31 let args: Vec<String> = env::args().collect();
32 Config::new(env::args())
33}
34
35
36