def add_array_argument(self, name, type, help, choices=None):
"""
Same as L{self.add_positional_argument()}, but allow unlimited number
of values to be specified on the command line.
@param name: name of the argument (used in help only)
@type name: str
@param type: argument data type
@type type: type (type factory callable)
@param help: help text
@type help: str
@param choices: list of allowed argument values
@type choices: tuple
"""
self._add(ArgHandler.Type.POSITIONAL, name, None,
type=type, help=help, choices=choices, nargs=argparse.ONE_OR_MORE)
python类ONE_OR_MORE的实例源码
def __init__(self, option_strings, nargs=1, dest='vmnames', help=None,
**kwargs):
if help is None:
if nargs == argparse.OPTIONAL:
help = 'at most one domain name'
elif nargs == 1:
help = 'a domain name'
elif nargs == argparse.ZERO_OR_MORE:
help = 'zero or more domain names'
elif nargs == argparse.ONE_OR_MORE:
help = 'one or more domain names'
elif nargs > 1:
help = '%s domain names' % nargs
else:
raise argparse.ArgumentError(
nargs, "Passed unexpected value {!s} as {!s} nargs ".format(
nargs, dest))
super(VmNameAction, self).__init__(option_strings, dest=dest, help=help,
nargs=nargs, **kwargs)
def __init__(self, option_strings, nargs=1, dest='vmnames', help=None,
**kwargs):
# pylint: disable=redefined-builtin
if help is None:
if nargs == argparse.OPTIONAL:
help = 'at most one running domain'
elif nargs == 1:
help = 'running domain name'
elif nargs == argparse.ZERO_OR_MORE:
help = 'zero or more running domains'
elif nargs == argparse.ONE_OR_MORE:
help = 'one or more running domains'
elif nargs > 1:
help = '%s running domains' % nargs
else:
raise argparse.ArgumentError(
nargs, "Passed unexpected value {!s} as {!s} nargs ".format(
nargs, dest))
super(RunningVmNameAction, self).__init__(
option_strings, dest=dest, help=help, nargs=nargs, **kwargs)
def mongolock_cli():
@configure
def main():
parser = argparse.ArgumentParser(
description="Run program, acquiring the lock in MongoDB"
)
parser.add_argument(
"-l", "--lockname",
help="Name of the lock",
required=True
)
parser.add_argument(
"-b", "--block",
help="Block execution till lock will be available",
action="store_true",
default=False
)
parser.add_argument(
"-t", "--timeout",
help="Timeout for blocking",
type=int,
default=None
)
parser.add_argument(
"command",
help="Command to run",
nargs=argparse.ONE_OR_MORE,
)
options = parser.parse_args()
locked = lock.with_autoprolong_lock(
options.lockname,
block=options.block, timeout=options.timeout)
with locked:
pty.spawn(options.command)
return main()
def __init__(self, want_app=True, want_app_no_instance=False,
vmname_nargs=None, **kwargs):
super(QubesArgumentParser, self).__init__(**kwargs)
self._want_app = want_app
self._want_app_no_instance = want_app_no_instance
self._vmname_nargs = vmname_nargs
if self._want_app:
self.add_argument('--qubesxml', metavar='FILE', action='store',
dest='app', help=argparse.SUPPRESS)
self.add_argument('--offline-mode', action='store_true',
default=None, dest='offline_mode', help=argparse.SUPPRESS)
self.add_argument('--verbose', '-v', action='count',
help='increase verbosity')
self.add_argument('--quiet', '-q', action='count',
help='decrease verbosity')
self.add_argument('--force-root', action='store_true',
default=False, help=argparse.SUPPRESS)
if self._vmname_nargs in [argparse.ZERO_OR_MORE, argparse.ONE_OR_MORE]:
vm_name_group = VmNameGroup(self, self._vmname_nargs)
self._mutually_exclusive_groups.append(vm_name_group)
elif self._vmname_nargs is not None:
self.add_argument('VMNAME', nargs=self._vmname_nargs,
action=VmNameAction)
self.set_defaults(verbose=1, quiet=0)
def get_options():
parser = argparse.ArgumentParser(description="Verificator of Ceph version")
parser.add_argument(
"-t", "--type",
default="deb",
help="Type of the repository. Default is 'deb'."
)
parser.add_argument(
"-c", "--orig-comps",
default=["main"],
nargs=argparse.ONE_OR_MORE,
help="Repository names. 'main' is the default one."
)
parser.add_argument(
"-u", "--repo-url",
help="URL of the repository"
)
parser.add_argument(
"-d", "--distro-source",
default="",
help="release of the repository."
)
parser.add_argument(
"-p", "--package-name",
default="ceph-common",
help="package name to verify."
)
parser.add_argument(
"--no-verify-packages",
action="store_true",
default=False,
help="skip package version verification."
)
parser.add_argument(
"--no-verify-installed-versions",
action="store_true",
default=False,
help="skip installed version verification."
)
parser.add_argument(
"--no-verify-repo-candidate",
action="store_true",
default=False,
help="skip verification of remote APT repo."
)
parser.add_argument(
"directory",
help="directory with fetched files."
)
parser.add_argument(
"raw_deb_url",
nargs=argparse.OPTIONAL,
help="raw repo string to use. If set, then -u, -c, -d and -t "
"are ignored."
)
return parser.parse_args()