Viewing file: argparsers.py (1.78 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
import argparse import sys
from . import messages from .weexceptions import ArgparseError
SUPPRESS = argparse.SUPPRESS
class HelpParser(argparse.ArgumentParser): """ Override `error` method of `argparse.ArgumentParser` in order to print the complete help on error. """
def error(self, message): sys.stderr.write("error: %s\n" % message) self.print_help() raise ArgparseError(message)
class CliParser(argparse.ArgumentParser): def set_default_subparser(self, name, args=None): """default subparser selection. Call after setup, just before parse_args() name: is the name of the subparser to call by default args: if set is the argument list handed to parse_args()
, tested with 2.7, 3.2, 3.3, 3.4 it works with 2.6 assuming argparse is installed """ subparser_found = False for arg in sys.argv[1:]: if arg in ["-h", "--help"]: # global help if no subparser break else: for x in self._subparsers._actions: if not isinstance(x, argparse._SubParsersAction): continue for sp_name in x._name_parser_map.keys(): if sp_name in sys.argv[1:]: subparser_found = True if not subparser_found: # insert default in first position, this implies no # global options without a sub_parsers specified if args is None: sys.argv.insert(1, name) else: args.insert(0, name)
def error(self, message): sys.stderr.write(messages.generic.weevely_s_error_s_usage % (messages.version, message)) # self.print_help() raise ArgparseError(message)
|