use crate::disk_cache::DiskCache;
use dirs;
use std;
use std::path::PathBuf;
#[derive(Clone)]
pub struct DenoDir {
pub root: PathBuf,
pub deps_cache: DiskCache,
pub gen_cache: DiskCache,
}
impl DenoDir {
pub fn new(custom_root: Option<PathBuf>) -> std::io::Result<Self> {
let home_dir = dirs::home_dir().expect("Could not get home directory.");
let fallback = home_dir.join(".deno");
let default = dirs::cache_dir()
.map(|d| d.join("deno"))
.unwrap_or(fallback);
let root: PathBuf = custom_root.unwrap_or(default);
let deps_path = root.join("deps");
let gen_path = root.join("gen");
let deno_dir = Self {
root,
deps_cache: DiskCache::new(&deps_path),
gen_cache: DiskCache::new(&gen_path),
};
Ok(deno_dir)
}
}