Skip to main content

mygrep/
config.rs

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