44from importlib .metadata import entry_points
55
66import typer # type: ignore[import]
7+ from typer .main import TyperInfo , solve_typer_info_help # type: ignore[import]
78
89from . import __version__
910
10- app = typer .Typer (add_completion = False )
11+ app = typer .Typer (add_completion = False , rich_markup_mode = "markdown" )
1112
1213
1314def version_callback (value : bool ):
@@ -31,28 +32,45 @@ def callback(
3132 pass
3233
3334
34- def entrypoint_to_pkgname (entrypoint : EntryPoint ) -> str :
35+ def _entrypoint_to_pkgname (entrypoint : EntryPoint ) -> str :
3536 """Find package name from entrypoint"""
3637
3738 top_level = entrypoint .value .split ("." )[0 ]
3839 dist = importlib_distribution (top_level )
3940 return dist .metadata ["name" ]
4041
4142
43+ def _inject_origin (docstring : str , origin : str ) -> str :
44+ return f"{ docstring } \n \n { origin } "
45+
46+
4247def register_plugins ():
4348 """Register subcommands via the ``pyodide.cli`` entry-point"""
4449 eps = entry_points (group = "pyodide.cli" )
4550 plugins = {ep .name : (ep .load (), ep ) for ep in eps }
4651 for plugin_name , (module , ep ) in plugins .items ():
47- pkgname = entrypoint_to_pkgname (ep )
52+ pkgname = _entrypoint_to_pkgname (ep )
53+ origin_text = f"Registered by: { pkgname } "
54+
4855 if isinstance (module , typer .Typer ):
56+ typer_info = TyperInfo (module )
57+ help_with_origin = _inject_origin (
58+ solve_typer_info_help (typer_info ), origin_text
59+ )
4960 app .add_typer (
50- module , name = plugin_name , rich_help_panel = f"Registered by: { pkgname } "
61+ module ,
62+ name = plugin_name ,
63+ rich_help_panel = origin_text ,
64+ help = help_with_origin ,
5165 )
5266 elif callable (module ):
5367 typer_kwargs = getattr (module , "typer_kwargs" , {})
68+ help_with_origin = _inject_origin (module .__doc__ , origin_text )
5469 app .command (
55- plugin_name , rich_help_panel = f"Registered by: { pkgname } " , ** typer_kwargs
70+ plugin_name ,
71+ rich_help_panel = origin_text ,
72+ help = help_with_origin ,
73+ ** typer_kwargs ,
5674 )(module )
5775 else :
5876 raise RuntimeError (f"Invalid plugin: { plugin_name } " )
0 commit comments