aboutsummaryrefslogtreecommitdiff
path: root/shared/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'shared/src/lib.rs')
-rw-r--r--shared/src/lib.rs23
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");
+ }
+}