22from pathlib import Path
33
44import click
5- import pytask
6- from pytask .main import main
5+ import pytask .mark .cli
76from pytask .pluginmanager import get_plugin_manager
87
98
@@ -17,19 +16,33 @@ def add_parameters(func):
1716 pm .hook .pytask_add_hooks (pm = pm )
1817 pm .hook .pytask_add_parameters_to_cli (command = func )
1918
19+ # Hack to pass the plugin manager via a hidden option to the ``config_from_cli``.
20+ func .params .append (click .Option (["--pm" ], default = pm , hidden = True ))
21+
2022 return func
2123
2224
2325@pytask .hookimpl
2426def pytask_add_hooks (pm ):
27+ """Add some hooks and plugins.
28+
29+ This hook implementation registers only plugins which extend the command line
30+ interface or patch the main entry-point :func:`pytask.hookspecs.pytask_main`.
31+
32+ """
2533 from pytask import database
2634 from pytask import debugging
35+ from pytask import main
36+ from pytask .mark import cli as mark_cli
2737
2838 pm .register (database )
2939 pm .register (debugging )
40+ pm .register (main )
41+ pm .register (mark_cli )
3042
3143
3244def _to_path (ctx , param , value ): # noqa: U100
45+ """Callback for :class:`click.Argument` or :class:`click.Option`."""
3346 return [Path (i ).resolve () for i in value ]
3447
3548
@@ -45,7 +58,11 @@ def pytask_add_parameters_to_cli(command):
4558 multiple = True ,
4659 help = "Ignore path (globs and multi allowed)." ,
4760 ),
48- click .Option (["--debug-pytask" ], is_flag = True , help = "Debug pytask." ),
61+ click .Option (
62+ ["--debug-pytask" ],
63+ is_flag = True ,
64+ help = "Debug pytask by tracing all hook calls." ,
65+ ),
4966 ]
5067 command .params .extend (additional_parameters )
5168
@@ -55,5 +72,6 @@ def pytask_add_parameters_to_cli(command):
5572@click .version_option ()
5673def pytask (** config_from_cli ):
5774 """Command-line interface for pytask."""
58- session = main (config_from_cli )
75+ pm = config_from_cli ["pm" ]
76+ session = pm .hook .pytask_main (config_from_cli = config_from_cli )
5977 sys .exit (session .exit_code )
0 commit comments