use dirs::home_dir;
use std::ffi::OsString;
use std::path::{Path, PathBuf};
use std::string::String;
pub fn home_path() -> Result<String, String> {
let home: Option<PathBuf> = home_dir();
match home {
Some(dir) => {
let home_dir: Result<String, OsString> = dir.into_os_string().into_string();
match home_dir {
Ok(home_dir_str) => Ok(home_dir_str),
_ => Err(String::from("Cannot parse home directory")),
}
}
_ => Err(String::from("Cannot get home directory")),
}
}
pub fn file_to_path(filename: &String, check: bool) -> Result<PathBuf, String> {
let file_path: &Path = Path::new(&filename);
if check {
match file_path.is_file() {
true => Ok(file_path.to_path_buf()),
_ => Err(format!("File not found: {}", filename)),
}
} else {
Ok(file_path.to_path_buf())
}
}