diff options
Diffstat (limited to 'cli/deno_dir.rs')
-rw-r--r-- | cli/deno_dir.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/cli/deno_dir.rs b/cli/deno_dir.rs index 645a053d0..3224fbf46 100644 --- a/cli/deno_dir.rs +++ b/cli/deno_dir.rs @@ -13,7 +13,7 @@ pub struct DenoDir { } impl DenoDir { - pub fn new(custom_root: Option<PathBuf>) -> std::io::Result<Self> { + pub fn new(maybe_custom_root: Option<PathBuf>) -> std::io::Result<Self> { // Only setup once. let home_dir = dirs::home_dir().expect("Could not get home directory."); let fallback = home_dir.join(".deno"); @@ -24,7 +24,16 @@ impl DenoDir { .map(|d| d.join("deno")) .unwrap_or(fallback); - let root: PathBuf = custom_root.unwrap_or(default); + let root: PathBuf = if let Some(root) = maybe_custom_root { + if root.is_absolute() { + root + } else { + std::env::current_dir()?.join(root) + } + } else { + default + }; + assert!(root.is_absolute()); let gen_path = root.join("gen"); let deno_dir = Self { |