From 8e8afdeea240a7a694ae06c43b7fe7f85e56f76d Mon Sep 17 00:00:00 2001 From: Matthias Dellweg Date: Wed, 27 Sep 2023 14:00:03 +0200 Subject: [PATCH] Generate command reference in docs [noissue] --- doc_requirements.txt | 1 + docs/cli_reference.md | 7 +++++++ mkdocs.yml | 8 ++++++-- pulp_cli/__init__.py | 35 ++++++++++++----------------------- tests/test_help_pages.py | 4 +--- 5 files changed, 27 insertions(+), 28 deletions(-) create mode 100644 docs/cli_reference.md diff --git a/doc_requirements.txt b/doc_requirements.txt index 016bb16df..2810d6b39 100644 --- a/doc_requirements.txt +++ b/doc_requirements.txt @@ -1 +1,2 @@ mkdocs +mkdocs-click diff --git a/docs/cli_reference.md b/docs/cli_reference.md new file mode 100644 index 000000000..d376b83a3 --- /dev/null +++ b/docs/cli_reference.md @@ -0,0 +1,7 @@ +::: mkdocs-click + :module: pulp_cli + :command: main + :prog_name: pulp + :depth: 0 + :list_subcommands: false + :style: plain diff --git a/mkdocs.yml b/mkdocs.yml index 7db1d344b..896debda2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -9,6 +9,8 @@ markdown_extensions: - toc: permalink: True - admonition + - attr_list + - mkdocs-click nav: - 'Overview': 'index.md' - 'installation.md' @@ -16,6 +18,8 @@ nav: - 'using_the_cli.md' - 'supported_workflows.md' - 'advanced_features.md' + - 'CLI Command Reference': 'cli_reference.md' - 'CHANGES.md' - - 'contributing.md' - - 'architecture.md' + - 'Developer material': + - 'contributing.md' + - 'architecture.md' diff --git a/pulp_cli/__init__.py b/pulp_cli/__init__.py index 3e06ed55e..04c2d3389 100644 --- a/pulp_cli/__init__.py +++ b/pulp_cli/__init__.py @@ -1,33 +1,22 @@ +import typing as t from types import ModuleType -from typing import Any, Dict, Optional import click import pkg_resources __version__ = "0.22.0.dev" -_main: Optional[click.Group] = None -def load_plugins() -> click.Group: - global _main +############################################################################## +# Load plugins +# https://packaging.python.org/guides/creating-and-discovering-plugins/#using-package-metadata +discovered_plugins: t.Dict[str, ModuleType] = { + entry_point.name: entry_point.load() + for entry_point in pkg_resources.iter_entry_points("pulp_cli.plugins") +} - ############################################################################## - # Load plugins - # https://packaging.python.org/guides/creating-and-discovering-plugins/#using-package-metadata - discovered_plugins: Dict[str, ModuleType] = { - entry_point.name: entry_point.load() - for entry_point in pkg_resources.iter_entry_points("pulp_cli.plugins") - } - _main = discovered_plugins["common"].main - assert isinstance(_main, click.Group) - for plugin in discovered_plugins.values(): - if hasattr(plugin, "mount"): - plugin.mount(_main, discovered_plugins=discovered_plugins) - return _main +main: click.Group = t.cast(click.Group, discovered_plugins["common"].main) - -def main() -> Any: - if _main is None: - load_plugins() - assert _main is not None - return _main() +for plugin in discovered_plugins.values(): + if hasattr(plugin, "mount"): + plugin.mount(main, discovered_plugins=discovered_plugins) diff --git a/tests/test_help_pages.py b/tests/test_help_pages.py index c2c8d56a6..fbdba0fd5 100644 --- a/tests/test_help_pages.py +++ b/tests/test_help_pages.py @@ -4,9 +4,7 @@ import pytest from click.testing import CliRunner -from pulp_cli import load_plugins - -main = load_plugins() +from pulp_cli import main def traverse_commands(command, args):