summaryrefslogtreecommitdiff
path: root/src/lib/git/index.ts
diff options
context:
space:
mode:
authorJoão Augusto Costa Branco Marado Torres <torres.dev@disroot.org>2025-06-24 12:08:41 -0300
committerJoão Augusto Costa Branco Marado Torres <torres.dev@disroot.org>2025-06-24 12:50:43 -0300
commitf9a77c5c27aede4e5978eb55d9b7af781b680a1d (patch)
treed545e325ba1ae756fc2eac66fac1001b6753c40d /src/lib/git/index.ts
feat!: initial commit
Signed-off-by: João Augusto Costa Branco Marado Torres <torres.dev@disroot.org>
Diffstat (limited to 'src/lib/git/index.ts')
-rw-r--r--src/lib/git/index.ts16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/lib/git/index.ts b/src/lib/git/index.ts
new file mode 100644
index 0000000..23a13eb
--- /dev/null
+++ b/src/lib/git/index.ts
@@ -0,0 +1,16 @@
+import { get, instanciate } from "../../utils/anonymous.ts";
+
+let cachedGitDir: Promise<URL> | undefined;
+
+export function gitDir(): Promise<URL> {
+ if (!cachedGitDir) {
+ cachedGitDir = new Deno.Command("git", {
+ args: ["rev-parse", "--show-toplevel"],
+ }).output()
+ .then(get("stdout"))
+ .then((x) => `file://${new TextDecoder().decode(x).trim()}/`)
+ .then(instanciate(URL));
+ }
+
+ return cachedGitDir;
+}