Example #1
0
def _write_plugin(plugin: Plugin, file: IO[str]):
    file.write('## {}\n'.format(plugin.id))
    file.write('\n')

    file.write('### {}\n'.format(Text('basic_info')))
    file.write('\n')

    file.write('- {}: `{}`\n'.format(Text('plugin_id'), plugin.id))
    if plugin.is_data_fetched():
        file.write('- {}: {}\n'.format(Text('plugin_name'),
                                       plugin.meta_info.name))
        file.write('- {}: {}\n'.format(Text('version'), plugin.latest_version))
        file.write('  - {}: {}\n'.format(Text('metadata_version'),
                                         plugin.meta_info.version))
        file.write('  - {}: {}\n'.format(
            Text('release_version'), plugin.release_summary.latest_version))
    else:
        file.write('- {}: {}\n'.format(Text('version'), failed()))

    file.write('- {}: {}\n'.format(
        Text('total_downloads'), plugin.release_summary.get_total_downloads()))
    file.write('- {}: {}\n'.format(
        Text('authors'),
        ', '.join(map(lambda a: a.to_markdown(), plugin.authors))))
    file.write('- {}: {}\n'.format(Text('repository'), plugin.repository))
    file.write('- {}: {}\n'.format(Text('labels'),
                                   get_label_list_markdown(plugin)))
    if plugin.is_data_fetched():
        file.write('- {}: {}\n'.format(
            Text('description'), plugin.meta_info.translated_description))
    else:
        file.write('- {}: {}\n'.format(Text('description'), failed()))
    file.write('\n')

    file.write('### {}\n'.format(Text('dependencies')))
    file.write('\n')
    if plugin.is_data_fetched():
        table = Table(Text('plugin_id'), Text('dependencies.requirement'))
        for pid, req in plugin.meta_info.dependencies.items():
            table.add_row(Link(pid, get_plugin_detail_link(pid)),
                          utils.format_markdown(req))
        table.write(file)
    else:
        file.write('{}\n'.format(failed()))
        file.write('\n')

    file.write('### {}\n'.format(Text('requirements')))
    file.write('\n')
    if plugin.is_data_fetched():
        table = Table(Text('python_package'), Text('requirements.requirement'))
        for line in plugin.meta_info.requirements:
            matched = re.match(r'^[^<>=~^]+', line)
            if matched is None:
                print('Unknown requirement line "{}" in plugin {}'.format(
                    line, plugin))
                continue
            package = matched.group()
            req = utils.remove_prefix(line, package)
            table.add_row(
                Link(package, 'https://pypi.org/project/{}'.format(package)),
                utils.format_markdown(req))
        table.write(file)
    else:
        file.write('{}\n'.format(failed()))
        file.write('\n')

    file.write('### {}\n'.format(Text('introduction')))
    file.write('\n')
    file.write(plugin.introduction.get() or '{}\n'.format(none()))
    file.write('\n')