1
0

cmdline: suppress the display of global options when displaying the help of a command

This commit is contained in:
ThomasV
2025-03-18 09:35:09 +01:00
parent d8964a00e7
commit 92b03d827c

View File

@@ -1767,45 +1767,80 @@ argparse._SubParsersAction.__call__ = subparser_call
def add_network_options(parser): def add_network_options(parser):
parser.add_argument("-f", "--serverfingerprint", dest=SimpleConfig.NETWORK_SERVERFINGERPRINT.key(), default=None, group = parser.add_argument_group('network options')
help="only allow connecting to servers with a matching SSL certificate SHA256 fingerprint. " + group.add_argument(
"To calculate this yourself: '$ openssl x509 -noout -fingerprint -sha256 -inform pem -in mycertfile.crt'. Enter as 64 hex chars.") "-f", "--serverfingerprint", dest=SimpleConfig.NETWORK_SERVERFINGERPRINT.key(), default=None,
parser.add_argument("-1", "--oneserver", action="store_true", dest=SimpleConfig.NETWORK_ONESERVER.key(), default=None, help="only allow connecting to servers with a matching SSL certificate SHA256 fingerprint. " +
help="connect to one server only") "To calculate this yourself: '$ openssl x509 -noout -fingerprint -sha256 -inform pem -in mycertfile.crt'. Enter as 64 hex chars.")
parser.add_argument("-s", "--server", dest=SimpleConfig.NETWORK_SERVER.key(), default=None, group.add_argument(
help="set server host:port:protocol, where protocol is either t (tcp) or s (ssl)") "-1", "--oneserver", action="store_true", dest=SimpleConfig.NETWORK_ONESERVER.key(), default=None,
parser.add_argument("-p", "--proxy", dest=SimpleConfig.NETWORK_PROXY.key(), default=None, help="connect to one server only")
help="set proxy [type:]host:port (or 'none' to disable proxy), where type is socks4 or socks5") group.add_argument(
parser.add_argument("--proxyuser", dest=SimpleConfig.NETWORK_PROXY_USER.key(), default=None, "-s", "--server", dest=SimpleConfig.NETWORK_SERVER.key(), default=None,
help="set proxy username") help="set server host:port:protocol, where protocol is either t (tcp) or s (ssl)")
parser.add_argument("--proxypassword", dest=SimpleConfig.NETWORK_PROXY_PASSWORD.key(), default=None, group.add_argument(
help="set proxy password") "-p", "--proxy", dest=SimpleConfig.NETWORK_PROXY.key(), default=None,
parser.add_argument("--noonion", action="store_true", dest=SimpleConfig.NETWORK_NOONION.key(), default=None, help="set proxy [type:]host:port (or 'none' to disable proxy), where type is socks4 or socks5")
help="do not try to connect to onion servers") group.add_argument(
parser.add_argument("--skipmerklecheck", action="store_true", dest=SimpleConfig.NETWORK_SKIPMERKLECHECK.key(), default=None, "--proxyuser", dest=SimpleConfig.NETWORK_PROXY_USER.key(), default=None,
help="Tolerate invalid merkle proofs from server") help="set proxy username")
group.add_argument(
"--proxypassword", dest=SimpleConfig.NETWORK_PROXY_PASSWORD.key(), default=None,
help="set proxy password")
group.add_argument(
"--noonion", action="store_true", dest=SimpleConfig.NETWORK_NOONION.key(), default=None,
help="do not try to connect to onion servers")
group.add_argument(
"--skipmerklecheck", action="store_true", dest=SimpleConfig.NETWORK_SKIPMERKLECHECK.key(), default=None,
help="Tolerate invalid merkle proofs from Electrum server")
def add_global_options(parser): def add_global_options(parser, suppress=False):
group = parser.add_argument_group('global options') group = parser.add_argument_group('global options')
group.add_argument("-v", dest="verbosity", help="Set verbosity (log levels)", default='') group.add_argument(
group.add_argument("-V", dest="verbosity_shortcuts", help="Set verbosity (shortcut-filter list)", default='') "-v", dest="verbosity", default='',
group.add_argument("-D", "--dir", dest="electrum_path", help="electrum directory") help=argparse.SUPPRESS if suppress else "Set verbosity (log levels)")
group.add_argument("-P", "--portable", action="store_true", dest="portable", default=False, help="Use local 'electrum_data' directory") group.add_argument(
group.add_argument("--testnet", action="store_true", dest="testnet", default=False, help="Use Testnet") "-V", dest="verbosity_shortcuts", default='',
group.add_argument("--testnet4", action="store_true", dest="testnet4", default=False, help="Use Testnet4") help=argparse.SUPPRESS if suppress else "Set verbosity (shortcut-filter list)")
group.add_argument("--regtest", action="store_true", dest="regtest", default=False, help="Use Regtest") group.add_argument(
group.add_argument("--simnet", action="store_true", dest="simnet", default=False, help="Use Simnet") "-D", "--dir", dest="electrum_path",
group.add_argument("--signet", action="store_true", dest="signet", default=False, help="Use Signet") help=argparse.SUPPRESS if suppress else "electrum directory")
group.add_argument("-o", "--offline", action="store_true", dest=SimpleConfig.NETWORK_OFFLINE.key(), default=None, help="Run offline") group.add_argument(
group.add_argument("--rpcuser", dest=SimpleConfig.RPC_USERNAME.key(), default=argparse.SUPPRESS, help="RPC user") "-w", "--wallet", dest="wallet_path",
group.add_argument("--rpcpassword", dest=SimpleConfig.RPC_PASSWORD.key(), default=argparse.SUPPRESS, help="RPC password") help=argparse.SUPPRESS if suppress else "wallet path")
group.add_argument(
"-P", "--portable", action="store_true", dest="portable", default=False,
help=argparse.SUPPRESS if suppress else "Use local 'electrum_data' directory")
group.add_argument(
"--testnet", action="store_true", dest="testnet", default=False,
help=argparse.SUPPRESS if suppress else "Use Testnet")
group.add_argument(
"--testnet4", action="store_true", dest="testnet4", default=False,
help=argparse.SUPPRESS if suppress else "Use Testnet4")
group.add_argument(
"--regtest", action="store_true", dest="regtest", default=False,
help=argparse.SUPPRESS if suppress else "Use Regtest")
group.add_argument(
"--simnet", action="store_true", dest="simnet", default=False,
help=argparse.SUPPRESS if suppress else "Use Simnet")
group.add_argument(
"--signet", action="store_true", dest="signet", default=False,
help=argparse.SUPPRESS if suppress else "Use Signet")
group.add_argument(
"-o", "--offline", action="store_true", dest=SimpleConfig.NETWORK_OFFLINE.key(), default=None,
help=argparse.SUPPRESS if suppress else "Run offline")
group.add_argument(
"--rpcuser", dest=SimpleConfig.RPC_USERNAME.key(), default=argparse.SUPPRESS,
help=argparse.SUPPRESS if suppress else "RPC user")
group.add_argument(
"--rpcpassword", dest=SimpleConfig.RPC_PASSWORD.key(), default=argparse.SUPPRESS,
help=argparse.SUPPRESS if suppress else "RPC password")
group.add_argument(
"--forgetconfig", action="store_true", dest=SimpleConfig.CONFIG_FORGET_CHANGES.key(), default=False,
help=argparse.SUPPRESS if suppress else "Forget config on exit")
def add_wallet_option(parser):
parser.add_argument("-w", "--wallet", dest="wallet_path", help="wallet path")
parser.add_argument("--forgetconfig", action="store_true", dest=SimpleConfig.CONFIG_FORGET_CHANGES.key(), default=False, help="Forget config on exit")
def get_simple_parser(): def get_simple_parser():
""" simple parser that figures out the path of the config file and ignore unknown args """ """ simple parser that figures out the path of the config file and ignore unknown args """
@@ -1835,7 +1870,6 @@ def get_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")
parser.add_argument("--version", dest="cmd", action='store_const', const='version', help="Return the version of Electrum.") parser.add_argument("--version", dest="cmd", action='store_const', const='version', help="Return the version of Electrum.")
add_global_options(parser) add_global_options(parser)
add_wallet_option(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)")
@@ -1845,7 +1879,6 @@ def get_parser():
parser_gui.add_argument("-L", "--lang", dest=SimpleConfig.LOCALIZATION_LANGUAGE.key(), default=None, help="default language used in GUI") parser_gui.add_argument("-L", "--lang", dest=SimpleConfig.LOCALIZATION_LANGUAGE.key(), default=None, help="default language used in GUI")
parser_gui.add_argument("--daemon", action="store_true", dest="daemon", default=False, help="keep daemon running after GUI is closed") parser_gui.add_argument("--daemon", action="store_true", dest="daemon", default=False, help="keep daemon running after GUI is closed")
parser_gui.add_argument("--nosegwit", action="store_true", dest=SimpleConfig.WIZARD_DONT_CREATE_SEGWIT.key(), default=False, help="Do not create segwit wallets") parser_gui.add_argument("--nosegwit", action="store_true", dest=SimpleConfig.WIZARD_DONT_CREATE_SEGWIT.key(), default=False, help="Do not create segwit wallets")
add_wallet_option(parser_gui)
add_network_options(parser_gui) add_network_options(parser_gui)
add_global_options(parser_gui) add_global_options(parser_gui)
# daemon # daemon
@@ -1862,12 +1895,12 @@ def get_parser():
# 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,
epilog="Run 'electrum -h to see the list of global options",
)
for optname, default in zip(cmd.options, cmd.defaults): for optname, default in zip(cmd.options, cmd.defaults):
if optname in ['wallet_path', 'wallet']: if optname in ['wallet_path', 'wallet', 'plugin']:
add_wallet_option(p)
continue
if optname in ['plugin']:
continue continue
if optname in command_options: if optname in command_options:
a, help = command_options[optname] a, help = command_options[optname]
@@ -1882,7 +1915,7 @@ def get_parser():
p.add_argument(*args, dest=optname, action=action, default=default, help=help, type=_type) p.add_argument(*args, dest=optname, action=action, default=default, help=help, type=_type)
else: else:
p.add_argument(*args, dest=optname, action=action, default=default, help=help) p.add_argument(*args, dest=optname, action=action, default=default, help=help)
add_global_options(p) add_global_options(p, suppress=True)
for param in cmd.params: for param in cmd.params:
if param in ['wallet_path', 'wallet']: if param in ['wallet_path', 'wallet']: