make.py (view raw)
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#!/usr/bin/env python3
from markdown2 import markdown_path
import os
import sys
import jinja2
import time
# import config file
try:
sys.path.append(os.getcwd())
import config
except ModuleNotFoundError:
print('Error: config.py not found')
# constants
PAGES_PATH = 'pages/'
BUILD_PATH = 'build/'
TEMPL_PATH = 'templates'
# jinja2
def jinja_render(html_text, template_file):
template_loader = jinja2.FileSystemLoader('./')
env = jinja2.Environment(loader=template_loader)
template = env.get_template(template_file)
output = template.render(title=config.title,
author=config.author,
header=config.header,
footer=config.footer,
body=html_text)
return output
def markdown_render(filename):
html_text = markdown_path(PAGES_PATH + filename)
return html_text
def main():
start = time.process_time()
template_file = TEMPL_PATH + '/index.html'
for page in os.listdir(PAGES_PATH):
html_text = markdown_render(page)
html_path = os.path.splitext(os.path.join(BUILD_PATH, page))[0]
if not os.path.exists(html_path):
os.mkdir(html_path)
output = jinja_render(html_text, template_file)
with open(os.path.join(html_path, 'index.html'), 'w') as f:
f.write(output)
print('Rendered %s' % (page))
print('Done in %0.5fs' % (time.process_time() - start))
if __name__ == "__main__":
main()
|