mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-23 17:47:31 +00:00
workaround argparse issue by reverting their commit
This commit is contained in:
parent
aad8b4377c
commit
1d1d76b1ad
1 changed files with 35 additions and 9 deletions
|
@ -729,48 +729,74 @@ def set_default_subparser(self, name, args=None):
|
||||||
argparse.ArgumentParser.set_default_subparser = set_default_subparser
|
argparse.ArgumentParser.set_default_subparser = set_default_subparser
|
||||||
|
|
||||||
|
|
||||||
|
# workaround https://bugs.python.org/issue23058
|
||||||
|
# see https://github.com/nickstenning/honcho/pull/121
|
||||||
|
|
||||||
|
def subparser_call(self, parser, namespace, values, option_string=None):
|
||||||
|
from argparse import ArgumentError, SUPPRESS, _UNRECOGNIZED_ARGS_ATTR
|
||||||
|
parser_name = values[0]
|
||||||
|
arg_strings = values[1:]
|
||||||
|
# set the parser name if requested
|
||||||
|
if self.dest is not SUPPRESS:
|
||||||
|
setattr(namespace, self.dest, parser_name)
|
||||||
|
# select the parser
|
||||||
|
try:
|
||||||
|
parser = self._name_parser_map[parser_name]
|
||||||
|
except KeyError:
|
||||||
|
tup = parser_name, ', '.join(self._name_parser_map)
|
||||||
|
msg = _('unknown parser %r (choices: %s)') % tup
|
||||||
|
raise ArgumentError(self, msg)
|
||||||
|
# parse all the remaining options into the namespace
|
||||||
|
# store any unrecognized options on the object, so that the top
|
||||||
|
# level parser can decide what to do with them
|
||||||
|
namespace, arg_strings = parser.parse_known_args(arg_strings, namespace)
|
||||||
|
if arg_strings:
|
||||||
|
vars(namespace).setdefault(_UNRECOGNIZED_ARGS_ATTR, [])
|
||||||
|
getattr(namespace, _UNRECOGNIZED_ARGS_ATTR).extend(arg_strings)
|
||||||
|
|
||||||
|
argparse._SubParsersAction.__call__ = subparser_call
|
||||||
|
|
||||||
|
|
||||||
def add_network_options(parser):
|
def add_network_options(parser):
|
||||||
parser.add_argument("-1", "--oneserver", action="store_true", dest="oneserver", default=False, help="connect to one server only")
|
parser.add_argument("-1", "--oneserver", action="store_true", dest="oneserver", default=False, help="connect to one server only")
|
||||||
parser.add_argument("-s", "--server", dest="server", default=None, help="set server host:port:protocol, where protocol is either t (tcp) or s (ssl)")
|
parser.add_argument("-s", "--server", dest="server", default=None, help="set server host:port:protocol, where protocol is either t (tcp) or s (ssl)")
|
||||||
parser.add_argument("-p", "--proxy", dest="proxy", default=None, help="set proxy [type:]host[:port], where type is socks4,socks5 or http")
|
parser.add_argument("-p", "--proxy", dest="proxy", default=None, help="set proxy [type:]host[:port], where type is socks4,socks5 or http")
|
||||||
|
|
||||||
from util import profiler
|
def add_global_options(parser):
|
||||||
|
group = parser.add_argument_group('global options')
|
||||||
@profiler
|
|
||||||
def get_parser():
|
|
||||||
# parent parser, because set_default_subparser removes global options
|
|
||||||
parent_parser = argparse.ArgumentParser('parent', add_help=False)
|
|
||||||
group = parent_parser.add_argument_group('global options')
|
|
||||||
group.add_argument("-v", "--verbose", action="store_true", dest="verbose", default=False, help="Show debugging information")
|
group.add_argument("-v", "--verbose", action="store_true", dest="verbose", default=False, help="Show debugging information")
|
||||||
group.add_argument("-D", "--dir", dest="electrum_path", help="electrum directory")
|
group.add_argument("-D", "--dir", dest="electrum_path", help="electrum directory")
|
||||||
group.add_argument("-P", "--portable", action="store_true", dest="portable", default=False, help="Use local 'electrum_data' directory")
|
group.add_argument("-P", "--portable", action="store_true", dest="portable", default=False, help="Use local 'electrum_data' directory")
|
||||||
group.add_argument("-w", "--wallet", dest="wallet_path", help="wallet path")
|
group.add_argument("-w", "--wallet", dest="wallet_path", help="wallet path")
|
||||||
group.add_argument("--testnet", action="store_true", dest="testnet", default=False, help="Use Testnet")
|
group.add_argument("--testnet", action="store_true", dest="testnet", default=False, help="Use Testnet")
|
||||||
group.add_argument("--segwit", action="store_true", dest="segwit", default=False, help="The Wizard will create Segwit seed phrases (Testnet only).")
|
group.add_argument("--segwit", action="store_true", dest="segwit", default=False, help="The Wizard will create Segwit seed phrases (Testnet only).")
|
||||||
|
|
||||||
|
def get_parser():
|
||||||
# create main parser
|
# create main parser
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
parents=[parent_parser],
|
|
||||||
epilog="Run 'electrum help <command>' to see the help for a command")
|
epilog="Run 'electrum help <command>' to see the help for a command")
|
||||||
|
add_global_options(parser)
|
||||||
subparsers = parser.add_subparsers(dest='cmd', metavar='<command>')
|
subparsers = parser.add_subparsers(dest='cmd', metavar='<command>')
|
||||||
# gui
|
# gui
|
||||||
parser_gui = subparsers.add_parser('gui', description="Run Electrum's Graphical User Interface.", help="Run GUI (default)")
|
parser_gui = subparsers.add_parser('gui', description="Run Electrum's Graphical User Interface.", help="Run GUI (default)")
|
||||||
parser_gui.add_argument("url", nargs='?', default=None, help="bitcoin URI (or bip70 file)")
|
parser_gui.add_argument("url", nargs='?', default=None, help="bitcoin URI (or bip70 file)")
|
||||||
#parser_gui.set_defaults(func=run_gui)
|
|
||||||
parser_gui.add_argument("-g", "--gui", dest="gui", help="select graphical user interface", choices=['qt', 'kivy', 'text', 'stdio'])
|
parser_gui.add_argument("-g", "--gui", dest="gui", help="select graphical user interface", choices=['qt', 'kivy', 'text', 'stdio'])
|
||||||
parser_gui.add_argument("-o", "--offline", action="store_true", dest="offline", default=False, help="Run offline")
|
parser_gui.add_argument("-o", "--offline", action="store_true", dest="offline", default=False, help="Run offline")
|
||||||
parser_gui.add_argument("-m", action="store_true", dest="hide_gui", default=False, help="hide GUI on startup")
|
parser_gui.add_argument("-m", action="store_true", dest="hide_gui", default=False, help="hide GUI on startup")
|
||||||
parser_gui.add_argument("-L", "--lang", dest="language", default=None, help="default language used in GUI")
|
parser_gui.add_argument("-L", "--lang", dest="language", default=None, help="default language used in GUI")
|
||||||
add_network_options(parser_gui)
|
add_network_options(parser_gui)
|
||||||
|
add_global_options(parser_gui)
|
||||||
# daemon
|
# daemon
|
||||||
parser_daemon = subparsers.add_parser('daemon', help="Run Daemon")
|
parser_daemon = subparsers.add_parser('daemon', help="Run Daemon")
|
||||||
parser_daemon.add_argument("subcommand", choices=['start', 'status', 'stop'], nargs='?')
|
parser_daemon.add_argument("subcommand", choices=['start', 'status', 'stop'], nargs='?')
|
||||||
#parser_daemon.set_defaults(func=run_daemon)
|
#parser_daemon.set_defaults(func=run_daemon)
|
||||||
add_network_options(parser_daemon)
|
add_network_options(parser_daemon)
|
||||||
|
add_global_options(parser_daemon)
|
||||||
# commands
|
# commands
|
||||||
for cmdname in sorted(known_commands.keys()):
|
for cmdname in sorted(known_commands.keys()):
|
||||||
cmd = known_commands[cmdname]
|
cmd = known_commands[cmdname]
|
||||||
p = subparsers.add_parser(cmdname, help=cmd.help, description=cmd.description)
|
p = subparsers.add_parser(cmdname, help=cmd.help, description=cmd.description)
|
||||||
|
add_global_options(p)
|
||||||
if cmdname == 'restore':
|
if cmdname == 'restore':
|
||||||
p.add_argument("-o", "--offline", action="store_true", dest="offline", default=False, help="Run offline")
|
p.add_argument("-o", "--offline", action="store_true", dest="offline", default=False, help="Run offline")
|
||||||
#p.set_defaults(func=run_cmdline)
|
#p.set_defaults(func=run_cmdline)
|
||||||
|
|
Loading…
Add table
Reference in a new issue