summaryrefslogtreecommitdiff
path: root/cli/deno_dir.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/deno_dir.rs')
-rw-r--r--cli/deno_dir.rs13
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 {