22from pathlib import Path
33
44import click
5- import pytask .mark . cli
5+ from pytask .config import hookimpl
66from pytask .pluginmanager import get_plugin_manager
77
88
1111
1212def add_parameters (func ):
1313 """Add parameters from plugins to the commandline interface."""
14- pm = get_plugin_manager ()
15- pm .register (sys .modules [__name__ ])
16- pm .hook .pytask_add_hooks (pm = pm )
14+ pm = _prepare_plugin_manager ()
1715 pm .hook .pytask_add_parameters_to_cli (command = func )
18-
1916 # Hack to pass the plugin manager via a hidden option to the ``config_from_cli``.
2017 func .params .append (click .Option (["--pm" ], default = pm , hidden = True ))
2118
2219 return func
2320
2421
25- @pytask .hookimpl
26- def pytask_add_hooks (pm ):
27- """Add some hooks and plugins.
22+ def _prepare_plugin_manager ():
23+ pm = get_plugin_manager ()
24+ pm .register (sys .modules [__name__ ])
25+ pm .hook .pytask_add_hooks (pm = pm )
26+ return pm
2827
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`.
3128
32- """
29+ @hookimpl
30+ def pytask_add_hooks (pm ):
31+ from pytask import collect
32+ from pytask import config
3333 from pytask import database
3434 from pytask import debugging
35+ from pytask import execute
36+ from pytask import logging
3537 from pytask import main
36- from pytask .mark import cli as mark_cli
38+ from pytask import parametrize
39+ from pytask import resolve_dependencies
40+ from pytask import skipping
41+ from pytask import mark_
3742
43+ pm .register (collect )
44+ pm .register (config )
3845 pm .register (database )
3946 pm .register (debugging )
47+ pm .register (execute )
48+ pm .register (logging )
4049 pm .register (main )
41- pm .register (mark_cli )
50+ pm .register (parametrize )
51+ pm .register (resolve_dependencies )
52+ pm .register (skipping )
53+ pm .register (mark_ )
4254
4355
4456def _to_path (ctx , param , value ): # noqa: U100
4557 """Callback for :class:`click.Argument` or :class:`click.Option`."""
4658 return [Path (i ).resolve () for i in value ]
4759
4860
49- @pytask . hookimpl
61+ @hookimpl
5062def pytask_add_parameters_to_cli (command ):
5163 additional_parameters = [
5264 click .Argument (
@@ -72,6 +84,12 @@ def pytask_add_parameters_to_cli(command):
7284@click .version_option ()
7385def pytask (** config_from_cli ):
7486 """Command-line interface for pytask."""
75- pm = config_from_cli ["pm" ]
76- session = pm .hook .pytask_main (config_from_cli = config_from_cli )
87+ session = main (config_from_cli )
7788 sys .exit (session .exit_code )
89+
90+
91+ def main (config_from_cli ):
92+ pm = config_from_cli .get ("pm" , _prepare_plugin_manager ())
93+ session = pm .hook .pytask_main (config_from_cli = config_from_cli )
94+
95+ return session
0 commit comments