#!/usr/bin/env python3 from pathlib import Path from ruamel.yaml import YAML from ansi2html import Ansi2HTMLConverter from rougail import RougailConfig, Rougail from rougail.output_exporter import RougailOutputExporter from rougail.user_data_file import RougailUserDataFile from rougail.output_doc import RougailOutputDoc NUM="50" if __name__ == "__main__": rougailconfig = RougailConfig.copy() rougailconfig['main_dictionaries'] = ['firefox'] rougailconfig['default_dictionary_format_version'] = '1.1' if Path('foxyproxy').is_dir(): has_foxyproxy = False rougailconfig['main_namespace'] = 'Firefox' rougailconfig['extra_dictionaries'] = {'FoxyProxy': ['foxyproxy']} else: has_foxyproxy = True rougailconfig['main_namespace'] = None # rougailconfig['tiramisu_cache'] = "cache.py" # rougail = Rougail(rougailconfig) # config = rougail.get_config() # print(config.value.get()) rougailconfig['step.output'] = 'doc' rougailconfig['doc.output_format'] = 'github' rougailconfig['doc.title_level'] = 3 inventory = RougailOutputDoc(rougailconfig=rougailconfig) rougailconfig['step.output'] = 'exporter' header = inventory.formater.header() doc = '' yaml = YAML() namespace = 'firefox' file_found = False subdoc = '' if rougailconfig['main_namespace']: all_dirs = [[rougailconfig['main_dictionaries']], rougailconfig['extra_dictionaries'].values()] else: all_dirs = [[rougailconfig['main_dictionaries']]] for r in all_dirs: for dirs in r: for d in dirs: files = list(Path(d).iterdir()) files.sort() for f in files: namespace = f.parent.name file_found = True if f.name.endswith('.yml') or f.name.endswith('.yaml'): subdoc += inventory.formater.title(str(f), 2) with f.open(encoding="utf8") as file_fh: objects = yaml.load(file_fh) subdoc += inventory.formater.yaml(objects) # doc += f'![{namespace.capitalize()} Proxy setting]({namespace}.png)\n' doc += f'{namespace.capitalize()} Proxy setting\n\n' with Path('summary.md').open('r') as sfh: summary = sfh.read() doc_file = Path('README.md') doc = header + inventory.formater.title('Summary', 1) + '\n' + summary + '\n\n' + inventory.formater.title('Structural files', 1) + doc + '\n' + subdoc with doc_file.open('r') as docfh: doc += inventory.formater.title('Description', 2) + docfh.read() if file_found: doc += inventory.formater.title('Generated documentation', 2) if has_foxyproxy: cmd = f"foo@bar:~$ rougail -v 1.1 -m firefox -o doc -do github" else: cmd = f"foo@bar:~$ rougail -v 1.1 -m firefox -n Firefox -e FoxyProxy -d 1 foxyproxy -o doc -do github" doc += f'```console\n{cmd}\n```\n' doc += inventory.gen_doc() # config = Path('config') if config.is_dir(): doc += inventory.formater.title('User data', 1) configs = list(config.iterdir()) configs.sort() for idx, dirname in enumerate(configs): for filename in dirname.iterdir(): if filename.name.endswith('.yml') or filename.name.endswith('.yaml'): doc += inventory.formater.title(f'Example {idx + 1}', 2) with filename.open(encoding="utf8") as file_fh: objects = yaml.load(file_fh) doc += inventory.formater.title(str(filename), 3) doc += inventory.formater.yaml(objects) readme = dirname / 'README.md' if readme.is_file(): doc += inventory.formater.title('Description', 3) with readme.open() as fh: doc += fh.read() + '\n\n' rougail = Rougail(rougailconfig) tiramisu_config = rougail.get_config() rougailconfig['step.user_data'] = ['file'] rougailconfig['file.filename'] = str(filename.absolute()) data = RougailUserDataFile(tiramisu_config, rougailconfig=rougailconfig) data.read() export = RougailOutputExporter(tiramisu_config, rougailconfig=rougailconfig) export.errors = data.errors export.warnings = data.warnings export.exporter() with export.formater.console.capture() as capture: export.print() conv = Ansi2HTMLConverter(inline=True) doc += inventory.formater.title('Output', 3) if has_foxyproxy: cmd = f"foo@bar:~$ rougail -v 1.1 -m firefox -u file -ff {filename}" else: cmd = f"foo@bar:~$ rougail -v 1.1 -m firefox -n Firefox -e FoxyProxy -d 1 foxyproxy -u file -ff {filename}" doc += f"```console\n{cmd}\n```\n" doc += '
' + conv.convert(capture.get(), full=False) + "
\n" if (dirname / 'read_write').is_file(): rougailconfig['exporter.read_write'] = True export = RougailOutputExporter(tiramisu_config, rougailconfig=rougailconfig) export.exporter() with export.formater.console.capture() as capture: export.print() conv = Ansi2HTMLConverter(inline=True) doc += inventory.formater.title('Output in read write mode', 3) if has_foxyproxy: cmd = f"foo@bar:~$ rougail -v 1.1 -m firefox -u file -ff {filename} --exporter.read_write" else: cmd = f"foo@bar:~$ rougail -v 1.1 -m firefox -n Firefox -e FoxyProxy -d 1 foxyproxy -u file -ff {filename} --exporter.read_write" doc += f"```console\n{cmd}\n```\n" doc += '
' + conv.convert(capture.get(), full=False) + "
\n" # with doc_file.open('w') as docfh: docfh.write(doc) with doc_file.open('w') as docfh: docfh.write(doc)