1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
use crate::config::Config; use crate::errors::*; use crate::workspaces::Workspace; use std::fs; use std::path::PathBuf; pub fn sn0int_dir() -> Result<PathBuf> { let path = dirs_next::data_dir() .ok_or_else(|| format_err!("Failed to find data directory"))?; let path = path.join("sn0int"); fs::create_dir_all(&path) .context("Failed to create data directory")?; Ok(path) } pub fn history_path() -> Result<PathBuf> { let path = sn0int_dir()?; let path = path.join("history"); Ok(path) } pub fn module_dir() -> Result<PathBuf> { let path = sn0int_dir()?; let path = path.join("modules"); fs::create_dir_all(&path) .context("Failed to create module directory")?; Ok(path) } pub fn data_dir() -> Result<PathBuf> { let path = sn0int_dir()? .join("data"); fs::create_dir_all(&path) .context("Failed to create module directory")?; Ok(path) } pub fn workspace_dir(workspace: &Workspace) -> Result<PathBuf> { let path = sn0int_dir()? .join("data") .join(workspace.as_str()); fs::create_dir_all(&path) .context("Failed to create module directory")?; Ok(path) } pub fn blobs_dir(workspace: &Workspace) -> Result<PathBuf> { let path = workspace_dir(workspace)? .join("blobs"); fs::create_dir_all(&path) .context("Failed to create module directory")?; Ok(path) } pub fn cache_dir() -> Result<PathBuf> { let path = dirs_next::cache_dir() .ok_or_else(|| format_err!("Failed to find cache directory"))?; let path = path.join("sn0int"); fs::create_dir_all(&path) .context("Failed to create cache directory")?; Ok(path) } fn print_path<D: std::fmt::Debug>(k: &str, v: D) { println!("{:30}: {:?}", k, v); } pub fn run(config: &Config) -> Result<()> { print_path("config_file", Config::path()?); print_path("data_dir", data_dir()?); print_path("module_dir", module_dir()?); for (k, v) in &config.namespaces { print_path(&format!("modules({})", k), v); } print_path("cache_dir", cache_dir()?); Ok(()) }