1use crate::error::UserError;
2use std::error::Error;
3
4#[derive(Debug)]
5pub struct Config {
6 pub directory: String,
7}
8
9impl Config {
10 #[allow(clippy::new_ret_no_self)]
11 pub fn new(args: &[String]) -> Result<Self, Box<dyn Error>> {
12 match args.get(0) {
13 Some(arg) => Ok(Self {
14 directory: arg.to_string(),
15 }),
16 None => Err(UserError::boxed("Didn't get a directory argument")),
17 }
18 }
19}
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24
25 #[test]
26 fn it_returns_config_if_arg_found() {
27 let args = vec![String::from("test")];
28 let config = Config::new(&args).unwrap();
29 assert_eq!("test", config.directory);
30 }
31
32 #[test]
33 fn it_returns_error_if_arg_not_found() {
34 let args = vec![];
35 let error = Config::new(&args).expect_err("Error expected");
36 assert_eq!("Didn't get a directory argument", error.to_string());
37 }
38}