all repos — py-vite @ 8bfd5d8dbe239d5bfcb8d10ee77bd732d92916cb

the original vite, written in python

vite/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()