diff --git a/lisp/lib/git.el b/lisp/lib/git.el new file mode 100644 index 000000000..dc5d82dc1 --- /dev/null +++ b/lisp/lib/git.el @@ -0,0 +1,11 @@ +;;; lisp/lib/git.el -*- lexical-binding: t; -*- + +;;;###autoload +(defun doom-git-toplevel (&rest segments) + "Return the path to the current repo's root." + (cl-destructuring-bind (code . output) + (doom-call-process "git" "rev-parse" "--show-toplevel") + (if (zerop code) + (apply #'file-name-concat output segments) + ;; TODO throw stderr as error + (user-error "Not in a git repo: %s" default-directory))))