diff options
Diffstat (limited to 'shared/src/lib.rs')
-rw-r--r-- | shared/src/lib.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/shared/src/lib.rs b/shared/src/lib.rs new file mode 100644 index 0000000..9fdcc27 --- /dev/null +++ b/shared/src/lib.rs @@ -0,0 +1,23 @@ +use anyhow::{bail, Result}; +use std::{env, path::PathBuf}; + +pub fn find_root() -> Result<PathBuf> { + let mut location = env::current_dir()?; + let mut found_root = false; + + for loc in location.ancestors() { + let mut loc = loc.join(".git"); + if loc.exists() { + loc.pop(); + found_root = true; + location = loc.canonicalize()?; + break; + } + } + + if found_root { + Ok(location) + } else { + bail!("Unable to find a valid git repo"); + } +} |