Skip to content

Commit 5b205da

Browse files
committed
Add "help" subcommand to make it friendlier to get help
1 parent 205e052 commit 5b205da

File tree

2 files changed

+38
-8
lines changed

2 files changed

+38
-8
lines changed

mike/driver.py

+19-8
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def check_remote_status(args, strict=False):
116116
sys.stderr.write('warning: {}\n'.format(msg))
117117

118118

119-
def deploy(args):
119+
def deploy(parser, args):
120120
cfg = load_mkdocs_config(args, strict=True)
121121
check_remote_status(args, strict=True)
122122
with commands.deploy(cfg, args.version, args.title, args.alias,
@@ -129,7 +129,7 @@ def deploy(args):
129129
git_utils.push_branch(args.remote, args.branch, args.force)
130130

131131

132-
def delete(args):
132+
def delete(parser, args):
133133
load_mkdocs_config(args)
134134
check_remote_status(args, strict=True)
135135
commands.delete(args.version, args.all, branch=args.branch,
@@ -138,7 +138,7 @@ def delete(args):
138138
git_utils.push_branch(args.remote, args.branch, args.force)
139139

140140

141-
def alias(args):
141+
def alias(parser, args):
142142
cfg = load_mkdocs_config(args)
143143
check_remote_status(args, strict=True)
144144
commands.alias(cfg, args.version, args.alias, args.update_aliases,
@@ -148,7 +148,7 @@ def alias(args):
148148
git_utils.push_branch(args.remote, args.branch, args.force)
149149

150150

151-
def retitle(args):
151+
def retitle(parser, args):
152152
load_mkdocs_config(args)
153153
check_remote_status(args, strict=True)
154154
commands.retitle(args.version, args.title, branch=args.branch,
@@ -157,7 +157,7 @@ def retitle(args):
157157
git_utils.push_branch(args.remote, args.branch, args.force)
158158

159159

160-
def list_versions(args):
160+
def list_versions(parser, args):
161161
def print_version(info):
162162
version = str(info.version)
163163
aliases = (' [{}]'.format(', '.join(sorted(info.aliases)))
@@ -192,7 +192,7 @@ def print_version(info):
192192
print_version(i)
193193

194194

195-
def set_default(args):
195+
def set_default(parser, args):
196196
load_mkdocs_config(args)
197197
check_remote_status(args, strict=True)
198198
commands.set_default(args.version, args.template, branch=args.branch,
@@ -201,12 +201,16 @@ def set_default(args):
201201
git_utils.push_branch(args.remote, args.branch, args.force)
202202

203203

204-
def serve(args):
204+
def serve(parser, args):
205205
load_mkdocs_config(args)
206206
check_remote_status(args)
207207
commands.serve(args.dev_addr, branch=args.branch)
208208

209209

210+
def help(parser, args):
211+
parser.parse_args(args.subcommand + ['--help'])
212+
213+
210214
def main():
211215
parser = argparse.ArgumentParser(prog='mike', description=description)
212216
subparsers = parser.add_subparsers(metavar='COMMAND')
@@ -304,8 +308,15 @@ def main():
304308
help=('IP address and port to serve from ' +
305309
'(default: %(default)s)'))
306310

311+
help_p = subparsers.add_parser(
312+
'help', help='show this help message and exit', add_help=False
313+
)
314+
help_p.set_defaults(func=help)
315+
help_p.add_argument('subcommand', metavar='CMD', nargs=argparse.REMAINDER,
316+
help='subcommand to request help for')
317+
307318
args = parser.parse_args()
308319
try:
309-
return args.func(args)
320+
return args.func(parser, args)
310321
except Exception as e:
311322
parser.exit(1, 'error: {}\n'.format(str(e)))

test/integration/test_help.py

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import unittest
2+
3+
from . import assertPopen
4+
5+
6+
class HelpTest(unittest.TestCase):
7+
def test_help(self):
8+
output = assertPopen(['mike', 'help'])
9+
self.assertRegex(
10+
output, r'^usage: mike \[-h\] \[--version\] COMMAND \.\.\.'
11+
)
12+
13+
def test_help_subcommand(self):
14+
output = assertPopen(['mike', 'help', 'deploy'])
15+
self.assertRegex(output, r'^usage: mike deploy')
16+
17+
def test_help_subcommand_extra(self):
18+
output = assertPopen(['mike', 'help', 'deploy', '--rebase'])
19+
self.assertRegex(output, r'^usage: mike deploy')

0 commit comments

Comments
 (0)