1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use super::*;
impl VMFileSystem {
pub const NOTEDOWN_ROOT: &'static str = "NOTEDOWN_ROOT";
pub fn set_pkg_root<P: AsRef<Path>>(path: P) -> Result<()> {
Ok(std::env::set_var(Self::NOTEDOWN_ROOT, path.as_ref().display().to_string()))
}
pub fn get_pkg_root() -> Result<PathBuf> {
let maybe_dir = PathBuf::from(get_env_var(Self::NOTEDOWN_ROOT)?);
match maybe_dir.is_dir() {
true => Ok(maybe_dir),
false => Err(NoteError::runtime_error(&format!("The environment variable {} does not point to a directory!", Self::NOTEDOWN_ROOT))),
}
}
}
fn get_env_var(key: &str) -> Result<String> {
match std::env::var(VMFileSystem::NOTEDOWN_ROOT) {
Ok(o) => Ok(o),
Err(VarError::NotPresent) => Err(NoteError::runtime_error(&format!("The environment variable {} does not found!", key))),
Err(VarError::NotUnicode(s)) => Err(NoteError::runtime_error(&format!("The environment variable {} seems not valid unicode: {:?}", key, s))),
}
}