diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-12-15 21:32:51 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-12-15 21:32:51 +0100 |
| commit | e0b0b2f976c61225a178c7715caf2656a1f6741f (patch) | |
| tree | 78a0e5c861462822d212c065f0825c906209bfe9 /megapixels/app/builder/builder.py | |
| parent | c5b02ffab8d388e8a2925e51736b902a48a95e71 (diff) | |
moving stuff
Diffstat (limited to 'megapixels/app/builder/builder.py')
| -rw-r--r-- | megapixels/app/builder/builder.py | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/megapixels/app/builder/builder.py b/megapixels/app/builder/builder.py new file mode 100644 index 00000000..620fc710 --- /dev/null +++ b/megapixels/app/builder/builder.py @@ -0,0 +1,90 @@ +#!/usr/bin/python + +from dotenv import load_dotenv +load_dotenv() + +import os +import glob +from jinja2 import Environment, FileSystemLoader, select_autoescape + +import s3 +import parser +from paths import * + +env = Environment( + loader=FileSystemLoader(template_path), + autoescape=select_autoescape([]) +) + +def build_page(fn, research_posts): + metadata, sections = parser.read_metadata(fn) + + if metadata is None: + print("{} has no metadata".format(fn)) + return + + print(metadata['url']) + + dirname = os.path.dirname(fn) + output_path = public_path + metadata['url'] + output_fn = os.path.join(output_path, "index.html") + + skip_h1 = False + + if metadata['url'] == '/': + template = env.get_template("home.html") + elif 'research/' in fn: + skip_h1 = True + template = env.get_template("research.html") + else: + template = env.get_template("page.html") + + if 'datasets/' in fn: + s3_dir = s3_datasets_path + else: + s3_dir = s3_site_path + + s3_path = s3.make_s3_path(s3_dir, metadata['path']) + + if 'index.md' in fn: + s3.sync_directory(dirname, s3_dir, metadata) + + content = parser.parse_markdown(sections, s3_path, skip_h1=skip_h1) + + html = template.render( + metadata=metadata, + content=content, + research_posts=research_posts, + latest_research_post=research_posts[-1], + ) + + os.makedirs(output_path, exist_ok=True) + with open(output_fn, "w") as file: + file.write(html) + + print("______") + +def build_research_index(research_posts): + metadata, sections = parser.read_metadata('../site/content/research/index.md') + template = env.get_template("page.html") + s3_path = s3.make_s3_path(s3_site_path, metadata['path']) + content = parser.parse_markdown(sections, s3_path, skip_h1=False) + content += parser.parse_research_index(research_posts) + html = template.render( + metadata=metadata, + content=content, + research_posts=research_posts, + latest_research_post=research_posts[-1], + ) + output_fn = public_path + '/research/index.html' + with open(output_fn, "w") as file: + file.write(html) + +def build_site(): + research_posts = parser.read_research_post_index() + for fn in glob.iglob(os.path.join(content_path, "**/*.md"), recursive=True): + build_page(fn, research_posts) + build_research_index(research_posts) + +if __name__ == '__main__': + build_site() |
