def image_tasks(conf, app): paths = conf.paths meta_file = get_images_metadata_file(conf) if 'images' not in conf.system.files.data: logger.info('no images to generate') return if isinstance(conf.system.files.data.images, list): images = conf.system.files.data.images else: images = [ conf.system.files.data.images ] for image in images: image['dir'] = paths.images source_base = os.path.join(paths.projectroot, image['dir'], image['name']) source_file = dot_concat(source_base, 'svg') rst_file = dot_concat(source_base, 'rst') image['conf'] = conf t = app.add('task') t.conf = conf t.job = generate_image_pages t.args = image t.description = "generating rst include file {0} for {1}".format(rst_file, source_file) t.target = rst_file t.dependency = meta_file logger.debug('adding task for image rst file: {0}'.format(rst_file)) for output in image['output']: if 'tag' in output: tag = '-' + output['tag'] else: tag = '' target_img = source_base + tag + '.png' inkscape_cmd = '{cmd} -z -d {dpi} -w {width} -y 0.0 -e >/dev/null {target} {source}' t = app.add('task') t.conf = conf t.job = _generate_images t.args = [ inkscape_cmd, output['dpi'], output['width'], target_img, source_file ] t.target = target_img t.dependency = [ meta_file, source_file ] t.description = 'generating image file {0} from {1}'.format(target_img, source_file) logger.debug('adding image creation job for {0}'.format(target_img))
def json_output_tasks(conf, app): regexes = [ (re.compile(r'<a class=\"headerlink\"'), '<a'), (re.compile(r'<[^>]*>'), ''), (re.compile(r'“'), '"'), (re.compile(r'”'), '"'), (re.compile(r'‘'), "'"), (re.compile(r'’'), "'"), (re.compile(r'&#\d{4};'), ''), (re.compile(r' '), ''), (re.compile(r'>'), '>'), (re.compile(r'<'), '<') ] outputs = [] for fn in expand_tree('source', 'txt'): # path = build/<branch>/json/<filename> path = os.path.join(conf.paths.branch_output, 'json', os.path.splitext(fn.split(os.path.sep, 1)[1])[0]) fjson = dot_concat(path, 'fjson') json = dot_concat(path, 'json') if conf.project.name == 'mms': if not os.path.exists(fjson): continue task = app.add('task') task.target = json task.dependency = fjson task.job = process_json_file task.description = "processing json file".format(json) task.args = [fjson, json, regexes, conf] outputs.append(json) list_file = os.path.join(conf.paths.branch_output, 'json-file-list') list_task = app.add('task') list_task.target = list_file list_task.job = generate_list_file list_task.args = [outputs, list_file, conf] output = app.add('app') out_task = output.add('task') out_task.job = json_output out_task.args = [conf] out_task.description = 'transfer json output to public directory'
def image_clean(conf, app): if 'images' not in conf.system.files.data: logger.info('no images to clean') return for image in conf.system.files.data.images: source_base = os.path.join(conf.paths.projectroot, image['dir'], image['name']) rm_rst = app.add('task') rm_rst.job = verbose_remove rm_rst.args = dot_concat(source_base, 'rst') for output in image['output']: rm_tag_image = app.add('task') rm_tag_image.job = verbose_remove if 'tag' in otuput: rm_tag_image.args = dot_concat(hyph_concat(source_base, tag), 'png') else: rm_tag_image.args = dot_concat(source_base, 'png')
html_copy_source = False html_use_smartypants = True html_domain_indices = True html_use_index = True html_split_index = False html_show_sourcelink = False html_show_sphinx = True html_show_copyright = True manual_edition_path = '{0}/{1}/{2}'.format(conf.project.url, conf.git.branches.current, sconf.theme.book_path_base) html_theme_options = { 'branch': conf.git.branches.current, 'pdfpath': dot_concat(manual_edition_path, 'pdf'), 'epubpath': dot_concat(manual_edition_path, 'epub'), 'manual_path': get_manual_path(conf), 'translations': languages, 'language': language, 'repo_name': sconf.theme.repo, 'jira_project': sconf.theme.jira, 'google_analytics': sconf.theme.google_analytics, 'project': sconf.theme.project, 'version': version, 'version_selector': get_versions(conf), 'stable': conf.version.stable, 'sitename': sconf.theme.sitename, 'nav_excluded': sconf.theme.nav_excluded, }
html_static_path = sconf.paths.static html_copy_source = False html_use_smartypants = True html_domain_indices = True html_use_index = True html_split_index = False html_show_sourcelink = False html_show_sphinx = True html_show_copyright = True manual_edition_path = "{0}/{1}/{2}".format(conf.project.url, conf.git.branches.current, sconf.theme.book_path_base) html_theme_options = { "branch": conf.git.branches.current, "pdfpath": dot_concat(manual_edition_path, "pdf"), "epubpath": dot_concat(manual_edition_path, "epub"), "manual_path": get_manual_path(conf), "translations": languages, "language": language, "repo_name": sconf.theme.repo, "jira_project": sconf.theme.jira, "google_analytics": sconf.theme.google_analytics, "project": sconf.theme.project, "version": version, "version_selector": get_versions(conf), "stable": conf.version.stable, "sitename": sconf.theme.sitename, "nav_excluded": sconf.theme.nav_excluded, }
def api_target(source): return dot_concat(os.path.splitext(source)[0], 'rst')