added the ability for a check to have multiple returns (#27)

Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
This commit is contained in:
Kevin Carter 2017-03-19 09:22:19 -05:00 committed by Major Hayden
parent a61786d4e1
commit b2b2f8e7b5
1 changed files with 18 additions and 6 deletions

View File

@ -98,14 +98,16 @@ VALID_OUTPUT_FORMATS = [
) )
@click.option('-v', '--verbose', is_flag=True, help='Enables verbose mode.') @click.option('-v', '--verbose', is_flag=True, help='Enables verbose mode.')
@pass_context @pass_context
def cli(ctx, output_format, verbose): def cli(*args, **kwargs):
"""A complex command line interface.""" """A complex command line interface."""
ctx.verbose = verbose try:
pass args[0].verbose = kwargs.get('verbose', False)
except IndexError: # pragma: no cover
pass
@cli.resultcallback(replace=True) @cli.resultcallback(replace=True)
def process_result(result, output_format, verbose): def process_result(results, output_format, **kwargs):
"""Render the output into the proper format.""" """Render the output into the proper format."""
module_name = 'monitorstack.common.formatters' module_name = 'monitorstack.common.formatters'
method_name = 'write_{}'.format(output_format.replace('-', '_')) method_name = 'write_{}'.format(output_format.replace('-', '_'))
@ -113,8 +115,18 @@ def process_result(result, output_format, verbose):
importlib.import_module(module_name), importlib.import_module(module_name),
method_name method_name
) )
output_formatter(result)
sys.exit(result['exit_code']) # Force the output formatter into a list
if not isinstance(results, list): # pragma: no cover
results = [results]
exit_code = 0
for result in results:
output_formatter(result)
if result['exit_code'] != 0:
exit_code = result['exit_code']
else:
sys.exit(exit_code)
if __name__ == '__main__': if __name__ == '__main__':