diff options
| author | Christoph Schlosser <christoph@linux.com> | 2025-08-24 14:08:47 +0200 |
|---|---|---|
| committer | Christoph Schlosser <christoph@linux.com> | 2025-08-24 14:08:47 +0200 |
| commit | 49fb19170a74accf51aa13ef0600a0d15f707737 (patch) | |
| tree | a0a66e919e031638129ab9b128eb74c12e376fe7 /g2h | |
| parent | 782a350e1f56292176ac8471195c889e47b2b841 (diff) | |
| download | git2hugo-49fb19170a74accf51aa13ef0600a0d15f707737.tar.gz | |
g2h: Add log page
Diffstat (limited to 'g2h')
| -rw-r--r-- | g2h/cli.py | 2 | ||||
| -rw-r--r-- | g2h/gen.py | 25 | ||||
| -rw-r--r-- | g2h/git.py | 6 |
3 files changed, 30 insertions, 3 deletions
@@ -20,12 +20,14 @@ def main(): git = Git(args.repo_path) branches = git.get_branches() + commits = git.get_commits() # 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(project_name, branches, tags) + gen.render_log(project_name, commits, branches, tags) if __name__ == '__main__': main() @@ -1,6 +1,14 @@ from jinja2 import Environment, FileSystemLoader import os +def ref_names_for_commit(refs, commit_sha): + ref_names = [] + for ref in refs: + if ref.commit.hexsha == commit_sha: + ref_names.append(ref.name) + + return ref_names + class Generator: def __init__(self, output_dir): self.output_dir = output_dir @@ -15,6 +23,23 @@ class Generator: with open(out_file, 'w', encoding='utf-8') as f: f.write(content) + def render_log(self, name, commits, branches, tags): + commits_context = [] + for commit in commits: + refs = ref_names_for_commit(branches, commit.hexsha) + ref_names_for_commit(tags, commit.hexsha) + commit_context = { + 'committed_datetime': commit.committed_datetime, + 'refs': refs, + 'summary': commit.summary + } + commits_context.append(commit_context) + + context = { + 'commits': commits_context, + 'title': name + } + self._render('log.md', context, 'l.md') + def render_overview(self, name, branches, tags): context = { 'branches': branches, @@ -7,11 +7,11 @@ class Git: except git.InvalidGitRepositoryError: raise ValueError(f"Invalid git repository at {repo_path}") - 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_commits(self): + return list(self.repo.iter_commits()) + def get_tags(self): return sorted(self.repo.tags, key=lambda b: b.commit.committed_date, reverse=True) |