From 5b4d60a48d19f33fde80797f010d88e11c926432 Mon Sep 17 00:00:00 2001 From: Luka Hietala Date: Tue, 18 Nov 2025 18:57:10 +0200 Subject: [PATCH] list bare repos --- .gitignore | 3 ++- app.py | 7 +++++-- git/repo.py | 21 +++++++++++++++++++++ git/repos.py | 0 templates/index.html | 9 ++++++++- 5 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 git/repo.py delete mode 100644 git/repos.py diff --git a/.gitignore b/.gitignore index fb9df04..b8e4bfe 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/.venv \ No newline at end of file +/.venv +__pycache__/ \ No newline at end of file diff --git a/app.py b/app.py index bc988c9..df03977 100644 --- a/app.py +++ b/app.py @@ -1,10 +1,13 @@ from flask import Flask, render_template +from git.repo import get_bare_repos + app = Flask(__name__) @app.route("/") -def hello_world(): - return render_template("index.html") +def index(): + repos = get_bare_repos("/home/lhietala/git-webview/repos-example") + return render_template("index.html", repos=repos) if __name__ == "__main__": app.run(debug=True) \ No newline at end of file diff --git a/git/repo.py b/git/repo.py new file mode 100644 index 0000000..389b4c5 --- /dev/null +++ b/git/repo.py @@ -0,0 +1,21 @@ +from pathlib import Path +import pygit2 as git + +# scans given path for bare git repos and list their names and paths +def get_bare_repos(path): + repos = [] + + repo_path = Path(path) + for item in repo_path.iterdir(): + if item.is_dir(): + try: + repo = git.Repository(str(item)) + if repo.is_bare: + repo_info = { + "name": item.name, + "path": str(item.resolve()) + } + repos.append(repo_info) + except git.GitError: + continue + return repos diff --git a/git/repos.py b/git/repos.py deleted file mode 100644 index e69de29..0000000 diff --git a/templates/index.html b/templates/index.html index f8f4583..c3cabf8 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1 +1,8 @@ - \ No newline at end of file +{% block content %} +

Repositories

+ +{% endblock %} \ No newline at end of file -- 2.47.3