|
- verbose = False
-
- class Project:
- """
- Build a project
- Make files::
-
- index.html
- assets/template.html
- assets/js/core.min.js
- assets/timestamps.json
- """
- def __init__(self):
- """
- load libraries
- """
- from build.bundle import Bundle
- from nav import Nav
-
- self.bundle = Bundle()
- self.nav = Nav()
-
- def boot(self):
- """
- returns bootstrap js
- """
- import json
-
- corejs = open('lib/js/core.min.js', 'r')
- v = int(self.vc.repo.get_value('last_version_number') or 0) + 1
-
- boot = ('window._version_number="%s"' % str(v)) + \
- '\n' + corejs.read()
-
- corejs.close()
-
- return boot
-
- def render_templates(self):
- """
- Generate static files from templates
- """
-
- # render templates
- import os
- from jinja2 import Environment, FileSystemLoader
- from build.markdown2_extn import Markdown2Extension
-
- env = Environment(loader=FileSystemLoader('templates'), extensions=[Markdown2Extension])
-
- # dynamic boot info
- env.globals['boot'] = self.boot()
- env.globals['nav'] = self.nav.html()
- page_info = self.nav.page_info()
-
- for wt in os.walk('templates'):
- for fname in wt[2]:
- if fname.split('.')[-1]=='html' and not fname.startswith('template'):
- fpath = os.path.relpath(os.path.join(wt[0], fname), 'templates')
- temp = env.get_template(fpath)
-
- env.globals.update(self.nav.page_info_template)
- env.globals.update(page_info.get(fpath, {}))
-
- # out file in parent folder of template
- f = open(fpath, 'w')
- f.write(temp.render())
- f.close()
- print "Rendered %s | %.2fkb" % (fpath, os.path.getsize(fpath) / 1024.0)
-
-
- def build(self):
- """
- Build all js files, index.html and template.html
- """
- from build.version import VersionControl
-
- self.vc = VersionControl()
- self.vc.add_all()
-
- # index, template if framework is dirty
- if self.vc.repo.uncommitted():
- self.bundle.bundle(self.vc)
- self.render_templates()
-
- # again add all bundles
- self.vc.add_all()
- self.vc.repo.commit()
-
- self.vc.close()
|