def parse_args(docstring, argv=None, options_first=True): """Parse the command line options :param docstring: the docstring that will be parsed :param argv: the arguments. Defaults to sys.argv if this is not specified :returns: parsed options as dictionary """ from jip.vendor.docopt import docopt argv = sys.argv[1:] if argv is None else argv return docopt(docstring, argv=argv, options_first=options_first)
def _main(): version = str(jip.__version__) args = docopt(__doc__, version=version, options_first=True, help=True) if args['--loglevel']: log_level(args['--loglevel']) cmd = args['<command>'] if not cmd: docopt(__doc__, version=version, options_first=True, argv=['--help'], help=True) sys.exit(1) try: import runpy argv = ["jip-" + cmd] + args['<args>'] sys.argv = argv # reset options runpy.run_module("jip.cli.jip_%s" % cmd, run_name="__main__") except ImportError: log.debug("Import error, trying command. Here is the exception:", exc_info=True) # check interpreter mode import os if os.path.exists(cmd): import runpy argv = ["jip-interpreter"] + \ ([] if not args['--pipeline'] else ['--pipeline']) + \ [cmd] + args['<args>'] sys.argv = argv # reset options runpy.run_module("jip.cli.jip_interpreter", run_name="__main__") else: sys.stderr.write("\nCommand %s not found\n\n" % (cmd)) docopt(__doc__, version=version, options_first=True, argv=['--help'], help=True) sys.exit(0) except KeyboardInterrupt: sys.exit(1)