Mercurial > piecrust2
view piecrust/chefutil.py @ 338:938be93215cb
bake: Improve render context and bake record, fix incremental bake bugs.
* Used sources and taxonomies are now stored on a per-render-pass basis.
This fixes bugs where sources/taxonomies were used for one pass, but that
pass is skipped on a later bake because its result is cached.
* Bake records are now created for all pages even when they're not baked.
Record collapsing is gone except for taxonomy index pages.
* Bake records now also have sub-entries in order to store information about
each sub-page, since some sub-pages could use sources/taxonomies differently
than others, or be missing from the output. This lets PieCrust handle
clean/dirty states on a sub-page level.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 06 Apr 2015 19:59:54 -0700 |
parents | a561fbad0b7f |
children | e7b865f8f335 |
line wrap: on
line source
import time from colorama import Fore def format_timed(start_time, message, indent_level=0, colored=True): end_time = time.clock() indent = indent_level * ' ' time_str = '%8.1f ms' % ((end_time - start_time) * 1000.0) if colored: return '[%s%s%s] %s' % (Fore.GREEN, time_str, Fore.RESET, message) return '%s[%s] %s' % (indent, time_str, message) def log_friendly_exception(logger, ex): indent = '' while ex: ex_msg = str(ex) if not ex_msg: ex_msg = '%s exception was thrown' % type(ex).__name__ logger.error('%s%s' % (indent, ex_msg)) indent += ' ' ex = ex.__cause__ def print_help_item(s, title, description, margin=4, align=25): s.write(margin * ' ') s.write(title) spacer = (align - margin - len(title) - 1) if spacer <= 0: s.write("\n") s.write(' ' * align) else: s.write(' ' * spacer) s.write(description) s.write("\n")