2
2
from pathlib import Path
3
3
4
4
import click
5
- import pytask .mark . cli
5
+ from pytask .config import hookimpl
6
6
from pytask .pluginmanager import get_plugin_manager
7
7
8
8
11
11
12
12
def add_parameters (func ):
13
13
"""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 ()
17
15
pm .hook .pytask_add_parameters_to_cli (command = func )
18
-
19
16
# Hack to pass the plugin manager via a hidden option to the ``config_from_cli``.
20
17
func .params .append (click .Option (["--pm" ], default = pm , hidden = True ))
21
18
22
19
return func
23
20
24
21
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
28
27
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
28
32
- """
29
+ @hookimpl
30
+ def pytask_add_hooks (pm ):
31
+ from pytask import collect
32
+ from pytask import config
33
33
from pytask import database
34
34
from pytask import debugging
35
+ from pytask import execute
36
+ from pytask import logging
35
37
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_
37
42
43
+ pm .register (collect )
44
+ pm .register (config )
38
45
pm .register (database )
39
46
pm .register (debugging )
47
+ pm .register (execute )
48
+ pm .register (logging )
40
49
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_ )
42
54
43
55
44
56
def _to_path (ctx , param , value ): # noqa: U100
45
57
"""Callback for :class:`click.Argument` or :class:`click.Option`."""
46
58
return [Path (i ).resolve () for i in value ]
47
59
48
60
49
- @pytask . hookimpl
61
+ @hookimpl
50
62
def pytask_add_parameters_to_cli (command ):
51
63
additional_parameters = [
52
64
click .Argument (
@@ -72,6 +84,12 @@ def pytask_add_parameters_to_cli(command):
72
84
@click .version_option ()
73
85
def pytask (** config_from_cli ):
74
86
"""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 )
77
88
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