diff options
| author | Christoph Schlosser <christoph@linux.com> | 2025-08-24 12:53:59 +0200 |
|---|---|---|
| committer | Christoph Schlosser <christoph@linux.com> | 2025-08-24 12:53:59 +0200 |
| commit | 782a350e1f56292176ac8471195c889e47b2b841 (patch) | |
| tree | 441c689e1a638472fb1e090f2f0888c2ecd54372 | |
| parent | 978703ebc86060555da3df4c376e37d16aecce29 (diff) | |
| download | git2hugo-782a350e1f56292176ac8471195c889e47b2b841.tar.gz | |
g2h:Add branches, tags and project name to overview page
| -rw-r--r-- | README.md | 4 | ||||
| -rw-r--r-- | g2h/cli.py | 12 | ||||
| -rw-r--r-- | g2h/gen.py | 6 | ||||
| -rw-r--r-- | g2h/git.py | 6 | ||||
| -rw-r--r-- | mise.toml | 2 | ||||
| -rw-r--r-- | templates/overview.md | 22 | ||||
| -rw-r--r-- | test_repo/git.tgz | bin | 15988 -> 16230 bytes |
7 files changed, 44 insertions, 8 deletions
@@ -30,9 +30,11 @@ For a full list of options, their defaults and how they're changing the behavior ## Features -- [ ] Overview page. +- [x] Overview page. Table of branches and table of tags. Each with name, most recent message summary and last modified date. + - [ ] Link branch and tag name to tree view. + - [ ] Link commit messages to commit page. - [ ] Commit log page. Table with branch/tag, message summary and last modified date columns. - [ ] Tabbed log page. @@ -1,4 +1,6 @@ import argparse +import os + from .git import Git from .gen import Generator @@ -6,16 +8,24 @@ def parse_args(): parser = argparse.ArgumentParser( prog='g2h', description='Convert a git repository into markdown files Hugo can understand.') + # TODO: Defaults for these two values should be $PWD. parser.add_argument('repo_path', help='Path to the root of git repository') parser.add_argument('out_dir', help='Path to where the generated files should be stored') + parser.add_argument('--name', help='Name of the project. Default: directory name of repo') return parser.parse_args() def main(): args = parse_args() git = Git(args.repo_path) + + branches = git.get_branches() + # TODO: Fix this for repo_path=(.|~) + project_name = args.name if args.name is not None else os.path.basename(args.repo_path) + tags = git.get_tags() + gen = Generator(args.out_dir) - gen.render_overview(git.get_all_commits()) + gen.render_overview(project_name, branches, tags) if __name__ == '__main__': main() @@ -15,8 +15,10 @@ class Generator: with open(out_file, 'w', encoding='utf-8') as f: f.write(content) - def render_overview(self, commits): + def render_overview(self, name, branches, tags): context = { - 'commits': commits + 'branches': branches, + 'tags': tags, + 'title': name } self._render('overview.md', context, '_index.md') @@ -9,3 +9,9 @@ class Git: def get_all_commits(self): return list(self.repo.iter_commits()) + + def get_branches(self): + return sorted(self.repo.branches, key=lambda b: b.commit.committed_date, reverse=True) + + def get_tags(self): + return sorted(self.repo.tags, key=lambda b: b.commit.committed_date, reverse=True) @@ -9,7 +9,7 @@ run = "pip install -r requirements.txt" [tasks.run] description = "Run g2h with the test repo" alias = "r" -run = "rm -rf ./test_out && python3 -m g2h.cli test_repo test_out" +run = "rm -rf ./test_out && python3 -m g2h.cli test_repo test_out --name 'Test repo'" [tasks.commit] run = [ diff --git a/templates/overview.md b/templates/overview.md index ce3e055..cc6f990 100644 --- a/templates/overview.md +++ b/templates/overview.md @@ -1,7 +1,23 @@ --- -title: Overview +title: {{ title }} --- -# Overview +# {{ title }} -{{ commits }} +{% if branches %} +| Branch | Commit | Date | +|--------|--------|------| +{%- for branch in branches %} +| {{ branch.name }} | {{ branch.commit.summary }} | {{ branch.commit.authored_datetime.strftime('%Y-%m-%d %H:%M:%S') }} |{% endfor %} +{% else %} +No branches found. +{% endif %} + +{% if tags %} +| Tag | Commit | Date | +|--------|--------|------| +{%- for tag in tags %} +| {{ tag.name }} | {{ tag.commit.summary }} | {{ tag.commit.authored_datetime.strftime('%Y-%m-%d %H:%M:%S') }} |{% endfor %} +{% else %} +No tags found. +{% endif %} diff --git a/test_repo/git.tgz b/test_repo/git.tgz Binary files differindex f0cf7b2..0ac0ff5 100644 --- a/test_repo/git.tgz +++ b/test_repo/git.tgz |