1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import argparse
import os
from .git import Git
from .page_factory import PageFactory
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')
parser.add_argument('--content-subdir', help='Subdir(s) where the page will be served from. Default: None', default='')
return parser.parse_args()
def main():
args = parse_args()
git = Git(args.repo_path)
branches = sorted(git.get_branches(), key=lambda b: b.commit.committed_date, reverse=True)
commits = git.get_commits()
head = git.get_head()
# TODO: Fix this for repo_path=(.|~)
project_name = args.name if args.name is not None else os.path.basename(args.repo_path)
tags = sorted(git.get_tags(), key=lambda t: t.commit.committed_date, reverse=True)
factory = PageFactory(args.out_dir, project_name, args.content_subdir)
factory.new_overview(branches, tags, head).render()
factory.new_log(commits, branches, tags, head).render()
for commit in commits:
factory.new_commit(commit).render()
tree = factory.new_tree(commit, '', git.get_repo())
for tree_page in tree.build_pages(factory):
tree_page.render()
for file in tree_page.get_files():
factory.new_file(commit, file).render()
if __name__ == '__main__':
main()
|