add hook for get_epilog
Change-Id: If3fe077522c156472a0213e8768470e0505c189d Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
parent
e72e54e757
commit
45de8e45ef
|
@ -89,6 +89,16 @@ class Command(object):
|
||||||
|
|
||||||
def get_epilog(self):
|
def get_epilog(self):
|
||||||
"""Return the command epilog."""
|
"""Return the command epilog."""
|
||||||
|
hook_epilogs = filter(
|
||||||
|
None,
|
||||||
|
(h.obj.get_epilog() for h in self._hooks),
|
||||||
|
)
|
||||||
|
if hook_epilogs:
|
||||||
|
# combine them, replacing a None in self._epilog with an
|
||||||
|
# empty string
|
||||||
|
parts = [self._epilog or '']
|
||||||
|
parts.extend(hook_epilogs)
|
||||||
|
return '\n\n'.join(parts)
|
||||||
return self._epilog
|
return self._epilog
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
|
|
|
@ -36,3 +36,8 @@ class CommandHook(object):
|
||||||
:returns: ArgumentParser
|
:returns: ArgumentParser
|
||||||
"""
|
"""
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
@abc.abstractmethod
|
||||||
|
def get_epilog(self):
|
||||||
|
"Return text to add to the command help epilog."
|
||||||
|
return ''
|
||||||
|
|
|
@ -66,6 +66,9 @@ class TestHook(hooks.CommandHook):
|
||||||
parser.add_argument('--added-by-hook')
|
parser.add_argument('--added-by-hook')
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
def get_epilog(self):
|
||||||
|
return 'hook epilog'
|
||||||
|
|
||||||
|
|
||||||
class TestCommandLoadHooks(base.TestBase):
|
class TestCommandLoadHooks(base.TestBase):
|
||||||
|
|
||||||
|
@ -83,10 +86,10 @@ class TestCommandLoadHooks(base.TestBase):
|
||||||
self.assertEqual('cliff.tests.test', kwargs['namespace'])
|
self.assertEqual('cliff.tests.test', kwargs['namespace'])
|
||||||
|
|
||||||
|
|
||||||
class TestParserHook(base.TestBase):
|
class TestHooks(base.TestBase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestParserHook, self).setUp()
|
super(TestHooks, self).setUp()
|
||||||
self.app = make_app()
|
self.app = make_app()
|
||||||
self.cmd = TestCommand(self.app, None, cmd_name='test')
|
self.cmd = TestCommand(self.app, None, cmd_name='test')
|
||||||
self.hook = TestHook(self.cmd)
|
self.hook = TestHook(self.cmd)
|
||||||
|
@ -105,3 +108,7 @@ class TestParserHook(base.TestBase):
|
||||||
parser = self.cmd.get_parser('test')
|
parser = self.cmd.get_parser('test')
|
||||||
results = parser.parse_args(['--added-by-hook', 'value'])
|
results = parser.parse_args(['--added-by-hook', 'value'])
|
||||||
self.assertEqual(results.added_by_hook, 'value')
|
self.assertEqual(results.added_by_hook, 'value')
|
||||||
|
|
||||||
|
def test_get_epilog(self):
|
||||||
|
results = self.cmd.get_epilog()
|
||||||
|
self.assertIn('hook epilog', results)
|
||||||
|
|
|
@ -39,3 +39,6 @@ class Hook(CommandHook):
|
||||||
print('sample hook get_parser()')
|
print('sample hook get_parser()')
|
||||||
parser.add_argument('--added-by-hook')
|
parser.add_argument('--added-by-hook')
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
def get_epilog(self):
|
||||||
|
return 'extension epilog text'
|
||||||
|
|
|
@ -293,6 +293,8 @@ single ``--added-by-hook`` option.
|
||||||
-h, --help show this help message and exit
|
-h, --help show this help message and exit
|
||||||
--added-by-hook ADDED_BY_HOOK
|
--added-by-hook ADDED_BY_HOOK
|
||||||
|
|
||||||
|
extension epilog text
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
:class:`cliff.hooks.CommandHook` -- The API for command hooks.
|
:class:`cliff.hooks.CommandHook` -- The API for command hooks.
|
||||||
|
|
Loading…
Reference in New Issue