def _create_default_templates(self, options: CombinedOptions): """ Copy default templates to project dir if their names in options are same as default. """ if options.is_default('doc_template'): source = self.project_path / options['doc_template'] to_copy = resource_filename( __name__, f"templates/{options.defaults['doc_template']}") copy_if_not_exists(source, to_copy) if options.is_default('scheme_template'): source = self.project_path / options['scheme_template'] to_copy = resource_filename( __name__, f"templates/{options.defaults['scheme_template']}") copy_if_not_exists(source, to_copy)
def _process_jinja(self, spec: PosixPath, options: CombinedOptions) -> str: """Process dbml spec with jinja and return the resulting string""" data = PyDBML(spec) result = '' if options['doc']: if options.is_default('template') and not Path( options['template']).exists(): # copy default template to project dir if it's doesn't exist there copyfile( resource_filename(__name__, 'template/' + self.defaults['template']), options['template']) try: template = self._env.get_template(str(options['template'])) result += template.render(data=data) except Exception as e: self._warning( f'\nFailed to render doc template {options["template"]}', error=e) return result if options['scheme']: if options.is_default('scheme_template') and\ not Path(options['scheme_template']).exists(): # copy default template to project dir if it's doesn't exist there copyfile( resource_filename( __name__, 'template/' + self.defaults['scheme_template']), options['scheme_template']) try: template = self._env.get_template( str(options['scheme_template'])) result += template.render(data=data) except Exception as e: self._warning( f'\nFailed to render scheme template {options["scheme_template"]}', error=e) return result return result
def _process_jinja(self, spec: PosixPath, options: CombinedOptions) -> str: """Process swagger.json with jinja and return the resulting string""" self.logger.debug('Using jinja mode') data = yaml.safe_load(open(spec, encoding="utf8")) additional = options.get('additional_json_path') if additional: if not additional.exists(): self._warning( f'Additional swagger spec file {additional} is missing. Skipping' ) else: add = yaml.safe_load(open(additional, encoding="utf8")) data = {**add, **data} if options.is_default('template') and not Path( options['template']).exists(): copyfile( resource_filename(__name__, 'template/' + self.defaults['template']), options['template']) return self._to_md(data, options['template'])