Improve error handling of default directory

This commit is contained in:
Age Manning
2019-07-02 17:32:14 +10:00
parent dd410535cb
commit 1aeec12b78
4 changed files with 48 additions and 16 deletions

View File

@@ -61,13 +61,24 @@ fn main() {
)
.get_matches();
let mut default_dir = dirs::home_dir().unwrap_or_else(|| PathBuf::from("."));
default_dir.push(DEFAULT_DATA_DIR);
let data_dir = &matches
let data_dir = match matches
.value_of("datadir")
.and_then(|v| Some(PathBuf::from(v)))
.unwrap_or_else(|| PathBuf::from(default_dir));
{
Some(v) => v,
None => {
// use the default
let mut default_dir = match dirs::home_dir() {
Some(v) => v,
None => {
crit!(log, "Failed to find a home directory");
return;
}
};
default_dir.push(DEFAULT_DATA_DIR);
PathBuf::from(default_dir)
}
};
// create the directory if needed
match fs::create_dir_all(&data_dir) {