summaryrefslogtreecommitdiff
path: root/megapixels/app/builder/builder.py
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-12-15 21:32:51 +0100
committerJules Laplace <julescarbon@gmail.com>2018-12-15 21:32:51 +0100
commite0b0b2f976c61225a178c7715caf2656a1f6741f (patch)
tree78a0e5c861462822d212c065f0825c906209bfe9 /megapixels/app/builder/builder.py
parentc5b02ffab8d388e8a2925e51736b902a48a95e71 (diff)
moving stuff
Diffstat (limited to 'megapixels/app/builder/builder.py')
-rw-r--r--megapixels/app/builder/builder.py90
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()