134 lines
6.4 KiB
Python
134 lines
6.4 KiB
Python
|
|
#!/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'\n'
|
||
|
|
doc += f'<img src="{namespace}.png" width=50% height=50% alt="{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 += '<pre>' + conv.convert(capture.get(), full=False) + "</pre>\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 += '<pre>' + conv.convert(capture.get(), full=False) + "</pre>\n"
|
||
|
|
#
|
||
|
|
with doc_file.open('w') as docfh:
|
||
|
|
docfh.write(doc)
|
||
|
|
with doc_file.open('w') as docfh:
|
||
|
|
docfh.write(doc)
|