diff --git a/synapse/config/_base.py b/synapse/config/_base.py
index efe2af5504..bfa9d28999 100644
--- a/synapse/config/_base.py
+++ b/synapse/config/_base.py
@@ -468,8 +468,8 @@ class RootConfig(object):
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 @@ class RootConfig(object):
" 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 @@ class RootConfig(object):
),
)
- 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 @@ class RootConfig(object):
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 @@ class RootConfig(object):
)
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 @@ class RootConfig(object):
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
|