mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Store the OptionParser in the API, use it to print unified help messages
Make `ipa -h` and `ipa help` output the same message. Since `ipa -h` output is generated by the OptionParser, we need to make the parser available. Store it in `api.parser`. Part of the effort for https://fedorahosted.org/freeipa/ticket/3060
This commit is contained in:
parent
1e2437ece1
commit
5ee2216f49
@ -759,7 +759,7 @@ class help(frontend.Local):
|
|||||||
name = from_cli(key)
|
name = from_cli(key)
|
||||||
mod_name = '%s.%s' % (self._PLUGIN_BASE_MODULE, name)
|
mod_name = '%s.%s' % (self._PLUGIN_BASE_MODULE, name)
|
||||||
if key is None:
|
if key is None:
|
||||||
make_ipa_parser().print_help(outfile)
|
self.api.parser.print_help(outfile)
|
||||||
return
|
return
|
||||||
if name == "topics":
|
if name == "topics":
|
||||||
self.print_topics(outfile)
|
self.print_topics(outfile)
|
||||||
@ -771,7 +771,7 @@ class help(frontend.Local):
|
|||||||
if cmd.NO_CLI:
|
if cmd.NO_CLI:
|
||||||
raise HelpError(topic=name)
|
raise HelpError(topic=name)
|
||||||
writer(_('Purpose: %s') % unicode(_(cmd.doc)).strip())
|
writer(_('Purpose: %s') % unicode(_(cmd.doc)).strip())
|
||||||
self.Backend.cli.build_parser(cmd).print_help()
|
self.Backend.cli.build_parser(cmd).print_help(outfile)
|
||||||
elif mod_name in sys.modules:
|
elif mod_name in sys.modules:
|
||||||
self.print_commands(name, outfile)
|
self.print_commands(name, outfile)
|
||||||
elif name == "commands":
|
elif name == "commands":
|
||||||
@ -795,10 +795,6 @@ class help(frontend.Local):
|
|||||||
|
|
||||||
writer(_('Usage: ipa [global-options] COMMAND [command-options]...'))
|
writer(_('Usage: ipa [global-options] COMMAND [command-options]...'))
|
||||||
writer()
|
writer()
|
||||||
writer(_('Built-in commands:'))
|
|
||||||
for c in self._builtins:
|
|
||||||
writer(' %s %s' % (to_cli(c.name).ljust(self._mtl), c.summary))
|
|
||||||
writer()
|
|
||||||
writer(_('Help topics:'))
|
writer(_('Help topics:'))
|
||||||
for t in topics:
|
for t in topics:
|
||||||
topic = self._topics[t]
|
topic = self._topics[t]
|
||||||
@ -1029,8 +1025,9 @@ class cli(backend.Executioner):
|
|||||||
On incorrect invocation, prints out a help message and returns None
|
On incorrect invocation, prints out a help message and returns None
|
||||||
"""
|
"""
|
||||||
if len(argv) == 0:
|
if len(argv) == 0:
|
||||||
|
self.Command.help(outfile=sys.stderr)
|
||||||
|
print >>sys.stderr
|
||||||
print >>sys.stderr, 'Error: Command not specified'
|
print >>sys.stderr, 'Error: Command not specified'
|
||||||
self.Command.help()
|
|
||||||
exit(2)
|
exit(2)
|
||||||
(key, argv) = (argv[0], argv[1:])
|
(key, argv) = (argv[0], argv[1:])
|
||||||
name = from_cli(key)
|
name = from_cli(key)
|
||||||
|
@ -593,6 +593,7 @@ class API(DictProxy):
|
|||||||
if context is not None:
|
if context is not None:
|
||||||
overrides['context'] = context
|
overrides['context'] = context
|
||||||
self.bootstrap(**overrides)
|
self.bootstrap(**overrides)
|
||||||
|
object.__setattr__(self, 'parser', parser)
|
||||||
return (options, args)
|
return (options, args)
|
||||||
|
|
||||||
def load_plugins(self):
|
def load_plugins(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user