def build(config, args): """Compile wiki to HTML and sync to the HTML root.""" log = logging.getLogger('markdoc.build') clean_temp(config, args) builder = Builder(config) for rel_filename in builder.walk(): html = builder.render_document(rel_filename) out_filename = p.join(config.temp_dir, p.splitext(rel_filename)[0] + p.extsep + 'html') if not p.exists(p.dirname(out_filename)): log.debug('makedirs %s' % p.dirname(out_filename)) os.makedirs(p.dirname(out_filename)) log.debug('Creating %s' % p.relpath(out_filename, start=config.temp_dir)) fp = codecs.open(out_filename, 'w', encoding='utf-8') try: fp.write(html) finally: fp.close() sync_html(config, args) build_listing(config, args)
def build_listing(config, args): """Create listings for all directories in the HTML root (post-build).""" log = logging.getLogger('markdoc.build-listing') list_basename = config['listing-filename'] builder = Builder(config) generate_listing = config.get('generate-listing', 'always').lower() always_list = True if generate_listing == 'never': log.debug("No listing generated (generate-listing == never)") return # No need to continue. for fs_dir, _, _ in os.walk(config.html_dir): index_file_exists = any([ p.exists(p.join(fs_dir, 'index.html')), p.exists(p.join(fs_dir, 'index')) ]) directory = '/' + '/'.join( p.relpath(fs_dir, start=config.html_dir).split(p.sep)) if directory == '/' + p.curdir: directory = '/' if (generate_listing == 'sometimes') and index_file_exists: log.debug("No listing generated for %s" % directory) continue log.debug("Generating listing for %s" % directory) listing = builder.render_listing(directory) list_filename = p.join(fs_dir, list_basename) fp = codecs.open(list_filename, 'w', encoding='utf-8') try: fp.write(listing) finally: fp.close() if not index_file_exists: log.debug("cp %s/%s %s/%s" % (directory, list_basename, directory, 'index.html')) shutil.copyfile(list_filename, p.join(fs_dir, 'index.html'))
def build_listing(config, args): """Create listings for all directories in the HTML root (post-build).""" log = logging.getLogger('markdoc.build-listing') list_basename = config['listing-filename'] builder = Builder(config) generate_listing = config.get('generate-listing', 'always').lower() always_list = True if generate_listing == 'never': log.debug("No listing generated (generate-listing == never)") return # No need to continue. for fs_dir, _, _ in os.walk(config.html_dir): index_file_exists = any([ p.exists(p.join(fs_dir, 'index.html')), p.exists(p.join(fs_dir, 'index'))]) directory = '/' + '/'.join(p.relpath(fs_dir, start=config.html_dir).split(p.sep)) if directory == '/' + p.curdir: directory = '/' if (generate_listing == 'sometimes') and index_file_exists: log.debug("No listing generated for %s" % directory) continue log.debug("Generating listing for %s" % directory) listing = builder.render_listing(directory) list_filename = p.join(fs_dir, list_basename) fp = codecs.open(list_filename, 'w', encoding='utf-8') try: fp.write(listing) finally: fp.close() if not index_file_exists: log.debug("cp %s/%s %s/%s" % (directory, list_basename, directory, 'index.html')) shutil.copyfile(list_filename, p.join(fs_dir, 'index.html'))