summaryrefslogtreecommitdiff
path: root/lua/utility/git.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/utility/git.lua')
-rw-r--r--lua/utility/git.lua29
1 files changed, 29 insertions, 0 deletions
diff --git a/lua/utility/git.lua b/lua/utility/git.lua
new file mode 100644
index 0000000..b43ccc5
--- /dev/null
+++ b/lua/utility/git.lua
@@ -0,0 +1,29 @@
+require("utility.misc")
+
+function RepositoryRoot()
+ local current_file = GetCurrentFile()
+
+ if current_file == "fzf" then
+ return ""
+ end
+
+ local super_project_path = vim.fn.system("git -C " .. Dirname(current_file)
+ .. " rev-parse --show-superproject-working-tree")
+
+ if vim.v.shell_error ~= 0 then
+ return ""
+ end
+
+ if super_project_path then
+ return super_project_path
+ end
+
+ local toplevel_path = vim.fn.system("git -C " .. Dirname(current_file)
+ .. " rev-parse --show-toplevel | tr -d '\n'")
+
+ if vim.v.shell_error ~= 0 then
+ return ""
+ end
+
+ return toplevel_path
+end