From 3bf9becd06c41cc8bf3e5755c7f86c9a0186f5c4 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 8 Apr 2020 14:20:11 +0100 Subject: [PATCH 1/2] Fix --help commandline argument I don't really remember why this was so complicated; I think it dates back to the time when we had to instantiate the Config classes before we could call `add_arguments` - ie before #5597. In any case, I don't think there's a good reason for it any more, and the impact of it being complicated is that `--help` doesn't work correctly. --- changelog.d/7249.bugfix | 1 + synapse/config/_base.py | 24 ++++++++---------------- 2 files changed, 9 insertions(+), 16 deletions(-) create mode 100644 changelog.d/7249.bugfix diff --git a/changelog.d/7249.bugfix b/changelog.d/7249.bugfix new file mode 100644 index 000000000000..7e3befc16e03 --- /dev/null +++ b/changelog.d/7249.bugfix @@ -0,0 +1 @@ +Fix --help commandline argument. diff --git a/synapse/config/_base.py b/synapse/config/_base.py index efe2af5504b2..bfa9d28999ff 100644 --- a/synapse/config/_base.py +++ b/synapse/config/_base.py @@ -468,8 +468,8 @@ def load_or_generate_config(cls, description, argv): Returns: Config object, or None if --generate-config or --generate-keys was set """ - config_parser = argparse.ArgumentParser(add_help=False) - config_parser.add_argument( + parser = argparse.ArgumentParser(description=description) + parser.add_argument( "-c", "--config-path", action="append", @@ -478,7 +478,7 @@ def load_or_generate_config(cls, description, argv): " may specify directories containing *.yaml files.", ) - generate_group = config_parser.add_argument_group("Config generation") + generate_group = parser.add_argument_group("Config generation") generate_group.add_argument( "--generate-config", action="store_true", @@ -526,12 +526,13 @@ def load_or_generate_config(cls, description, argv): ), ) - config_args, remaining_args = config_parser.parse_known_args(argv) + cls.invoke_all_static("add_arguments", parser) + config_args = parser.parse_args(argv) config_files = find_config_files(search_paths=config_args.config_path) if not config_files: - config_parser.error( + parser.error( "Must supply a config file.\nA config file can be automatically" ' generated using "--generate-config -H SERVER_NAME' ' -c CONFIG-FILE"' @@ -550,7 +551,7 @@ def load_or_generate_config(cls, description, argv): if config_args.generate_config: if config_args.report_stats is None: - config_parser.error( + parser.error( "Please specify either --report-stats=yes or --report-stats=no\n\n" + MISSING_REPORT_STATS_SPIEL ) @@ -609,15 +610,6 @@ def load_or_generate_config(cls, description, argv): ) generate_missing_configs = True - parser = argparse.ArgumentParser( - parents=[config_parser], - description=description, - formatter_class=argparse.RawDescriptionHelpFormatter, - ) - - obj.invoke_all_static("add_arguments", parser) - args = parser.parse_args(remaining_args) - config_dict = read_config_files(config_files) if generate_missing_configs: obj.generate_missing_files(config_dict, config_dir_path) @@ -626,7 +618,7 @@ def load_or_generate_config(cls, description, argv): obj.parse_config_dict( config_dict, config_dir_path=config_dir_path, data_dir_path=data_dir_path ) - obj.invoke_all("read_arguments", args) + obj.invoke_all("read_arguments", config_args) return obj From 65c38e1e6c870cdef1af9c23d585dbbe75ff728d Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> Date: Thu, 9 Apr 2020 12:20:42 +0100 Subject: [PATCH 2/2] Update changelog.d/7249.bugfix Co-Authored-By: Brendan Abolivier --- changelog.d/7249.bugfix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/7249.bugfix b/changelog.d/7249.bugfix index 7e3befc16e03..6ae700d36518 100644 --- a/changelog.d/7249.bugfix +++ b/changelog.d/7249.bugfix @@ -1 +1 @@ -Fix --help commandline argument. +Fix --help command-line argument.