From 23959ba324048175f934549f7ca0f9a8ae081115 Mon Sep 17 00:00:00 2001 From: The1111mp Date: Sun, 25 Feb 2024 16:18:55 +0800 Subject: [PATCH] feat: workspace (find `.nvmdrc` recursively from the current working directory) Signed-off-by: The1111mp --- src/common.rs | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/common.rs b/src/common.rs index 970f1c9..0431865 100644 --- a/src/common.rs +++ b/src/common.rs @@ -88,12 +88,7 @@ fn get_default_installtion_path() -> PathBuf { } fn get_version() -> String { - let mut nvmdrc = match env::current_dir() { - Err(_) => PathBuf::from(""), - Ok(dir) => dir, - }; - nvmdrc.push(".nvmdrc"); - + let nvmdrc = find_nvmdrc(); let project_version = match read_to_string(&nvmdrc) { Err(_) => String::from(""), Ok(v) => v, @@ -112,6 +107,24 @@ fn get_version() -> String { } } +fn find_nvmdrc() -> PathBuf { + let mut current_dir = match env::current_dir() { + Ok(dir) => dir, + Err(_) => PathBuf::from(""), + }; + current_dir.push(".nvmdrc"); + + while current_dir.pop() { + let mut nvmdrc = current_dir.clone(); + nvmdrc.push(".nvmdrc"); + if nvmdrc.is_file() { + return nvmdrc; + } + } + + PathBuf::from("") +} + fn get_nvmd_path() -> PathBuf { match default_home_dir() { Ok(p) => p,