def autocompile(ws, conf, env, **options): """Subcommand: autocompile -- automatically re-compiles when something in content-dir has changed and parallel serving files.""" CONF_PY = './conf.py' mtime = -1 cmtime = getmtime(CONF_PY) while True: ntime = max( max( getmtime(e) for e in readers.filelist(conf['content_dir']) if utils.istext(e)), max(getmtime(p) for p in readers.filelist(conf['layout_dir']))) if mtime != ntime: try: compile(conf, env, **options) except AcrylamidException as e: log.fatal(e.args[0]) pass event.reset() mtime = ntime if cmtime != getmtime(CONF_PY): log.info(' * Restarting due to change in %s' % (CONF_PY)) # Kill the webserver ws.shutdown() # Force compilation since no template was changed argv = sys.argv if options['force'] else sys.argv[:] + ["--force"] # Restart acrylamid os.execvp(sys.argv[0], argv) time.sleep(1)
def autocompile(ws, conf, env, **options): """Subcommand: autocompile -- automatically re-compiles when something in content-dir has changed and parallel serving files.""" CONF_PY = './conf.py' mtime = -1 cmtime = getmtime(CONF_PY) while True: ntime = max( max(getmtime(e) for e in readers.filelist(conf['content_dir']) if utils.istext(e)), max(getmtime(p) for p in readers.filelist(conf['layout_dir']))) if mtime != ntime: try: compile(conf, env, **options) except AcrylamidException as e: log.fatal(e.args[0]) pass event.reset() mtime = ntime if cmtime != getmtime(CONF_PY): log.info(' * Restarting due to change in %s' % (CONF_PY)) # Kill the webserver ws.shutdown() # Force compilation since no template was changed argv = sys.argv if options['force'] else sys.argv[:] + ["--force"] # Restart acrylamid os.execvp(sys.argv[0], argv) time.sleep(1)
def compile(conf, env): """Copy or compile assets to output directory. If an asset is used as template, it won't be copied to the output directory.""" global __writers, __default ext_map = dict((cls.ext, cls) for cls in ( SASSWriter, SCSSWriter, LESSWriter, HTMLWriter, XMLWriter )) other = [(prefix, filelist(prefix, conf['static_ignore'])) for prefix in conf['static']] other = [((relpath(path, prefix), prefix) for path in generator) for prefix, generator in other] files = ((path, conf['theme']) for path in filelist(conf['theme'], conf['theme_ignore'])) files = ((relpath(path, prefix), prefix) for path, prefix in files) files = ((path, prefix) for path, prefix in files if path not in env.engine.templates) for path, directory in chain(files, chain(*other)): # initialize writer for extension if not already there _, ext = splitext(path) if ext in ext_map and ext not in __writers: __writers[ext] = ext_map[ext](conf, env) src, dest = join(directory, path), join(conf['output_dir'], path) writer = __writers.get(ext, __defaultwriter) writer.write(src, dest, force=env.options.force, dryrun=env.options.dryrun)
def compile(conf, env): """Copy or compile assets to output directory. If an asset is used as template, it won't be copied to the output directory. All assets are tracked by the event object and should not be removed during `acrylamid clean`.""" global __writers, __default ext_map = { '.sass': SASSWriter, '.scss': SCSSWriter, '.less': LESSWriter, # '.haml': 'HAMLWriter', # ... } other = [(prefix, readers.filelist(prefix)) for prefix in conf['static']] other = [((relpath(path, prefix), prefix) for path in generator) for prefix, generator in other] files = ((path, conf['theme']) for path in readers.filelist(conf['theme'])) files = ((relpath(path, prefix), prefix) for path, prefix in files) files = ((path, prefix) for path, prefix in files if path not in env.engine.templates) for path, directory in chain(files, chain(*other)): # initialize writer for extension if not already there _, ext = splitext(path) if ext in ext_map and ext not in __writers: __writers[ext] = ext_map[ext]() src, dest = join(directory, path), join(conf['output_dir'], path) writer = __writers.get(ext, __defaultwriter) writer.write(src, dest, force=env.options.force, dryrun=env.options.dryrun)
def autocompile(ws, conf, env): """Subcommand: autocompile -- automatically re-compiles when something in content-dir has changed and parallel serving files.""" mtime = -1 cmtime = getmtime('conf.py') while True: ws.wait = True ntime = max( max(getmtime(e) for e in readers.filelist( conf['content_dir'], conf.get('content_ignore', [])) if istext(e)), max(getmtime(p) for p in readers.filelist( conf['theme'], conf.get('theme_ignore', [])))) if mtime != ntime: try: compile(conf, env) except (SystemExit, KeyboardInterrupt) as e: raise e except Exception as e: log.fatal(e.args[0]) event.reset() mtime = ntime ws.wait = False if cmtime != getmtime('conf.py'): log.info(' * Restarting due to change in conf.py') # Kill the webserver ws.shutdown() # Restart acrylamid os.execvp(sys.argv[0], sys.argv) time.sleep(1)
def compile(conf, env): """Copy/Compile assets to output directory. All assets from the theme directory (except for templates) and static directories can be compiled or just copied using several built-in writers.""" global __writers, __default ext_map = dict((cls.ext, cls) for cls in ( globals()[writer] for writer in conf.static_filter )) other = [(prefix, filelist(prefix, conf['static_ignore'])) for prefix in conf['static']] other = [((relpath(path, prefix), prefix) for path in generator) for prefix, generator in other] files = ((path, conf['theme']) for path in filelist(conf['theme'], conf['theme_ignore'])) files = ((relpath(path, prefix), prefix) for path, prefix in files) files = ((path, prefix) for path, prefix in files if path not in env.engine.templates) for path, directory in chain(files, chain(*other)): # initialize writer for extension if not already there _, ext = splitext(path) if ext in ext_map and ext not in __writers: __writers[ext] = ext_map[ext](conf, env) src, dest = join(directory, path), join(conf['output_dir'], path) writer = __writers.get(ext, __defaultwriter) writer.write(src, dest, force=env.options.force, dryrun=env.options.dryrun) for writer in __writers.values(): writer.clean()
def autocompile(ws, conf, env): """Subcommand: autocompile -- automatically re-compiles when something in content-dir has changed and parallel serving files.""" mtime = -1 cmtime = getmtime('conf.py') # config content_extension originally defined as string, not a list exts = conf.get('content_extension', ['.txt', '.rst', '.md']) if isinstance(exts, string_types): whitelist = (exts, ) else: whitelist = tuple(exts) while True: ws.wait = True ntime = max( max( getmtime(e) for e in readers.filelist(conf['content_dir'], conf['content_ignore']) if e.endswith(whitelist)), max( getmtime(p) for p in chain([ f for theme in conf['theme'] for f in readers.filelist(theme, conf['theme_ignore']) ], readers.filelist(conf['static'], conf['static_ignore'])))) if mtime != ntime: try: compile(conf, env) except (SystemExit, KeyboardInterrupt): raise except Exception: log.exception("uncaught exception during auto-compilation") else: conf = load(env.options.conf) env = Environment.new(env) event.reset() mtime = ntime ws.wait = False if cmtime != getmtime('conf.py'): log.info(' * Restarting due to change in conf.py') # Kill the webserver ws.shutdown() # Restart acrylamid os.execvp(sys.argv[0], sys.argv) time.sleep(1)
def autocompile(ws, conf, env): """Subcommand: autocompile -- automatically re-compiles when something in content-dir has changed and parallel serving files.""" mtime = -1 cmtime = getmtime('conf.py') # config content_extension originally defined as string, not a list exts = conf.get('content_extension',['.txt', '.rst', '.md']) if isinstance(exts, string_types): whitelist = (exts,) else: whitelist = tuple(exts) while True: ws.wait = True ntime = max( max(getmtime(e) for e in readers.filelist( conf['content_dir'], conf['content_ignore']) if e.endswith(whitelist)), max(getmtime(p) for p in chain( readers.filelist(conf['theme'], conf['theme_ignore']), readers.filelist(conf['static'], conf['static_ignore'])))) if mtime != ntime: try: compile(conf, env) except (SystemExit, KeyboardInterrupt): raise except Exception: log.exception("uncaught exception during auto-compilation") else: conf = load(env.options.conf) env = Environment.new(env) event.reset() mtime = ntime ws.wait = False if cmtime != getmtime('conf.py'): log.info(' * Restarting due to change in conf.py') # Kill the webserver ws.shutdown() # Restart acrylamid os.execvp(sys.argv[0], sys.argv) time.sleep(1)
def autocompile(ws, conf, env): """Subcommand: autocompile -- automatically re-compiles when something in content-dir has changed and parallel serving files.""" mtime = -1 cmtime = getmtime("conf.py") while True: ws.wait = True ntime = max( max(getmtime(e) for e in readers.filelist(conf["content_dir"], conf["content_ignore"]) if istext(e)), max( getmtime(p) for p in chain( readers.filelist(conf["theme"], conf["theme_ignore"]), readers.filelist(conf["static"], conf["static_ignore"]), ) ), ) if mtime != ntime: try: compile(conf, env) except (SystemExit, KeyboardInterrupt): raise except Exception: log.exception("uncaught exception during auto-compilation") else: conf = load(env.options.conf) env = Environment.new(env) event.reset() mtime = ntime ws.wait = False if cmtime != getmtime("conf.py"): log.info(" * Restarting due to change in conf.py") # Kill the webserver ws.shutdown() # Restart acrylamid os.execvp(sys.argv[0], sys.argv) time.sleep(1)
def run(conf, env, options): """Subcommand: check -- run W3C over generated output and check destination of linked items""" paths = [path for path in readers.filelist(conf['output_dir']) if path.endswith('.html')] if options.random: random.shuffle(paths) if options.action == 'W3C': w3c(paths, conf, warn=options.warn, sleep=options.sleep) else: validate(paths, options.jobs)
def run(conf, env, options): """Subcommand: check -- run W3C over generated output and check destination of linked items""" paths = [ path for path in readers.filelist(conf['output_dir']) if path.endswith('.html') ] if options.random: random.shuffle(paths) if options.action == 'W3C': w3c(paths, conf, warn=options.warn, sleep=options.sleep) else: validate(paths, options.jobs)