from datetime import datetime from subprocess import check_output from jwebsite.content import Content from jwebsite.context import Context def load_extension(context: Context) -> None: context.add_filters(git_creation_date=_git_creation_date) def _git_creation_date(content: Content) -> datetime: git_dir = check_output(["git", "rev-parse", "--show-toplevel"], encoding="utf-8") git_dir = git_dir.strip() log = check_output( [ "git", "log", "--pretty=format:%ad", "--date=iso-strict", "--diff-filter=A", "--", str(content.path.relative_to(git_dir)), ], encoding="utf-8", ) log_lines = log.splitlines() if len(log_lines) == 0: return datetime.now() return datetime.fromisoformat(log_lines[0])