Source code for mgkit.workflow.utils

"""
Utility functions for workflows
"""
from __future__ import print_function
import logging
import argparse
import sys
import click
import mgkit

LOG = logging.getLogger(__name__)


[docs]def cite_callback(ctx, param, value): if not value or ctx.resilient_parsing: return click.echo(mgkit.CITE) ctx.exit()
cite_option = click.option('--cite', is_flag=True, callback=cite_callback, expose_value=False, is_eager=True)
[docs]class CiteAction(argparse.Action): """ Argparse action to print the citation, using the :func:`mgkit.cite` function. """ def __init__(self, option_strings, dest=argparse.SUPPRESS, default=argparse.SUPPRESS, help='Show citation for the framework'): super(CiteAction, self).__init__( option_strings, dest=dest, default=default, nargs=0, help=help) def __call__(self, parser, namespace, values, option_string=None): mgkit.cite(file_handle=sys.stderr) setattr(namespace, self.dest, values) parser.exit(0)
[docs]class PrintManAction(argparse.Action): """ .. versionadded:: 0.2.6 Argparse action to print the manual """ def __init__(self, option_strings, dest=argparse.SUPPRESS, default=argparse.SUPPRESS, help='Show the script manual', manual=''): super(PrintManAction, self).__init__( option_strings, dest=dest, default=default, nargs=0, help=help) self.manual = manual def __call__(self, parser, namespace, values, option_string=None): print(self.manual, file=sys.stdout) setattr(namespace, self.dest, values) parser.exit(0)
[docs]def add_basic_options(parser, manual=''): """ .. versionchanged:: 0.2.6 added *quiet* option Adds verbose and version options to the option parser """ group = parser.add_mutually_exclusive_group() group.add_argument( '-v', '--verbose', action='store_const', const=logging.DEBUG, default=logging.INFO, help='more verbose - includes debug messages', dest='verbose' ) group.add_argument( '--quiet', action='store_const', const=logging.ERROR, help='less verbose - only error and critical messages', dest='verbose' ) parser.add_argument( '--cite', action=CiteAction ) parser.add_argument( '--manual', action=PrintManAction, manual=manual ) parser.add_argument( '--version', action='version', version='%(prog)s {0}'.format(mgkit.__VERSION__) )
[docs]def exit_script(message, ret_value): """ Used to exit the script with a return value """ LOG.critical(message) sys.exit(ret_value)