platypush/generate_missing_docs.py

122 lines
3.6 KiB
Python
Raw Normal View History

2019-12-30 10:16:55 +01:00
import os
from platypush.context import get_plugin
def get_all_plugins():
return get_plugin('inspect').get_all_plugins().output
def get_all_backends():
return get_plugin('inspect').get_all_backends().output
2019-12-30 18:50:01 +01:00
def get_all_events():
return get_plugin('inspect').get_all_events().output
2019-12-30 10:16:55 +01:00
# noinspection DuplicatedCode
def generate_plugins_doc():
plugins_index = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'docs', 'source', 'plugins.rst')
plugins_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'docs', 'source', 'platypush', 'plugins')
all_plugins = sorted(plugin for plugin in get_all_plugins().keys())
for plugin in all_plugins:
plugin_file = os.path.join(plugins_dir, plugin + '.rst')
if not os.path.exists(plugin_file):
plugin = 'platypush.plugins.' + plugin
header = '``{}``'.format(plugin)
divider = '=' * len(header)
body = '\n.. automodule:: {}\n :members:\n'.format(plugin)
out = '\n'.join([header, divider, body])
with open(plugin_file, 'w') as f:
f.write(out)
with open(plugins_index, 'w') as f:
f.write('''
Plugins
=======
.. toctree::
:maxdepth: 2
:caption: Plugins:
''')
for plugin in all_plugins:
f.write(' platypush/plugins/' + plugin + '.rst\n')
# noinspection DuplicatedCode
def generate_backends_doc():
backends_index = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'docs', 'source', 'backends.rst')
backends_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'docs', 'source', 'platypush', 'backend')
all_backends = sorted(backend for backend in get_all_backends().keys())
for backend in all_backends:
backend_file = os.path.join(backends_dir, backend + '.rst')
if not os.path.exists(backend_file):
backend = 'platypush.backend.' + backend
header = '``{}``'.format(backend)
divider = '=' * len(header)
body = '\n.. automodule:: {}\n :members:\n'.format(backend)
out = '\n'.join([header, divider, body])
with open(backend_file, 'w') as f:
f.write(out)
with open(backends_index, 'w') as f:
f.write('''
Backends
========
.. toctree::
:maxdepth: 2
:caption: Backends:
''')
for backend in all_backends:
2019-12-30 10:22:05 +01:00
f.write(' platypush/backend/' + backend + '.rst\n')
2019-12-30 10:16:55 +01:00
2019-12-30 18:50:01 +01:00
# noinspection DuplicatedCode
def generate_events_doc():
events_index = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'docs', 'source', 'events.rst')
events_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'docs', 'source', 'platypush', 'events')
all_events = sorted(event for event in get_all_events().keys())
for event in all_events:
event_file = os.path.join(events_dir, event[len('platypush.message.event.'):] + '.rst')
if not os.path.exists(event_file):
header = '``{}``'.format(event)
divider = '=' * len(header)
body = '\n.. automodule:: {}\n :members:\n'.format(event)
out = '\n'.join([header, divider, body])
with open(event_file, 'w') as f:
f.write(out)
with open(events_index, 'w') as f:
f.write('''
Events
======
.. toctree::
:maxdepth: 2
:caption: Events:
''')
for event in all_events:
f.write(' platypush/events/' + event[len('platypush.message.event.'):] + '.rst\n')
2019-12-30 10:16:55 +01:00
generate_plugins_doc()
generate_backends_doc()
2019-12-30 18:50:01 +01:00
generate_events_doc()
2019-12-30 10:16:55 +01:00
# vim:sw=4:ts=4:et: