1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use std::fs;
use std::io::Read;

use clap::ArgMatches;
use serde::Deserialize;

pub fn read_for_str<T: for<'a> Deserialize<'a>>(name: &str) -> T {
    let mut data = fs::File::open(name).expect("file not found");
    let mut data_str = String::new();
    data.read_to_string(&mut data_str).expect("read failed");
    serde_yaml::from_str(data_str.as_str()).expect("parse yaml failed")
}

pub fn get_template_dir<'a>(matches: &'a ArgMatches, name: &str, default: &'a str) -> Option<&'a str> {
    match matches.value_of(name) {
        None => Option::from(default),
        _ => matches.value_of(name),
    }
}