Diff between 5d16208cf70b8794cc525b2f2be8a4a3c00fe346 and 940e3eaec7658a8e348076723147d9336bf88927

Changed Files

File Additions Deletions Status
git/config.py +21 -0 added
git/repo.py +3 -5 modified

Full Patch

diff --git a/git/config.py b/git/config.py
new file mode 100644
index 0000000..8343102
--- /dev/null
+++ b/git/config.py
@@ -0,0 +1,21 @@
+import pygit2 as git
+
+
+def get_repo_owner(repo_path: str) -> str | None:
+    """Return lipasto.owner from repo config, None when missing or on error."""
+    try:
+        repo = git.Repository(str(repo_path))
+    except git.GitError:
+        return None
+
+    try:
+        config = repo.config
+    except git.GitError:
+        return None
+
+    try:
+        return config["lipasto.owner"]
+    except KeyError:
+        return None
+    except git.GitError:
+        return None
diff --git a/git/repo.py b/git/repo.py
index 540f94e..87d3be1 100644
--- a/git/repo.py
+++ b/git/repo.py
@@ -1,13 +1,11 @@
 from pathlib import Path
 import pygit2 as git
-import os
-from .db import init_db, get_owner
+
+from .config import get_repo_owner
 
 # scans given path for bare git repos and list their names and paths
 def get_bare_repos(path):
     repos = []
-    db_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lipasto.db')
-    init_db(db_path)
 
     repo_path = Path(path)
 
@@ -23,7 +21,7 @@ def get_bare_repos(path):
                             description = desc_file.read_text().strip()
                         except:
                             pass
-                    owner = get_owner(db_path, item.name)
+                    owner = get_repo_owner(item)
                     repo_info = {
                         "name": item.name,
                         "path": str(item.resolve()),