19
19
readme_re = re .compile (r'This is \w+ version \d+\.\d+' ).match
20
20
21
21
22
+ def initialise_subcommands () -> None :
23
+ global subcommands
24
+
25
+ from blurb ._add import add
26
+ from blurb ._export import export
27
+ from blurb ._merge import merge
28
+ from blurb ._populate import populate
29
+ from blurb ._release import release
30
+
31
+ subcommands = {
32
+ 'version' : version ,
33
+ 'help' : help ,
34
+ 'add' : add ,
35
+ 'export' : export ,
36
+ 'merge' : merge ,
37
+ 'populate' : populate ,
38
+ 'release' : release ,
39
+
40
+ # Make 'blurb --help/--version/-V' work.
41
+ '--help' : help ,
42
+ '--version' : version ,
43
+ '-V' : version ,
44
+ }
45
+
46
+
22
47
def error (msg : str , / ) -> NoReturn :
23
48
raise SystemExit (f'Error: { msg } ' )
24
49
@@ -35,26 +60,18 @@ def require_ok(prompt: str, /) -> str:
35
60
return s
36
61
37
62
38
- def subcommand (fn : CommandFunc ):
39
- global subcommands
40
- subcommands [fn .__name__ ] = fn
41
- return fn
42
-
43
-
44
63
def get_subcommand (subcommand : str , / ) -> CommandFunc :
45
64
fn = subcommands .get (subcommand )
46
65
if not fn :
47
66
error (f"Unknown subcommand: { subcommand } \n Run 'blurb help' for help." )
48
67
return fn
49
68
50
69
51
- @subcommand
52
70
def version () -> None :
53
71
"""Print blurb version."""
54
72
print ('blurb version' , blurb .__version__ )
55
73
56
74
57
- @subcommand
58
75
def help (subcommand : str | None = None ) -> None :
59
76
"""Print help for subcommands.
60
77
@@ -102,12 +119,6 @@ def help(subcommand: str | None = None) -> None:
102
119
raise SystemExit (0 )
103
120
104
121
105
- # Make 'blurb --help/--version/-V' work.
106
- subcommands ['--help' ] = help
107
- subcommands ['--version' ] = version
108
- subcommands ['-V' ] = version
109
-
110
-
111
122
def _blurb_help () -> None :
112
123
"""Print default help for blurb."""
113
124
@@ -157,6 +168,7 @@ def main() -> None:
157
168
subcommand = args [0 ]
158
169
args = args [1 :]
159
170
171
+ initialise_subcommands ()
160
172
fn = get_subcommand (subcommand )
161
173
162
174
# hack
0 commit comments