Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 5a70963

Browse files
authored
Fix --help commandline argument (#7249)
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.
1 parent 7f7f996 commit 5a70963

File tree

2 files changed

+9
-16
lines changed

2 files changed

+9
-16
lines changed

changelog.d/7249.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix --help command-line argument.

synapse/config/_base.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -468,8 +468,8 @@ def load_or_generate_config(cls, description, argv):
468468
469469
Returns: Config object, or None if --generate-config or --generate-keys was set
470470
"""
471-
config_parser = argparse.ArgumentParser(add_help=False)
472-
config_parser.add_argument(
471+
parser = argparse.ArgumentParser(description=description)
472+
parser.add_argument(
473473
"-c",
474474
"--config-path",
475475
action="append",
@@ -478,7 +478,7 @@ def load_or_generate_config(cls, description, argv):
478478
" may specify directories containing *.yaml files.",
479479
)
480480

481-
generate_group = config_parser.add_argument_group("Config generation")
481+
generate_group = parser.add_argument_group("Config generation")
482482
generate_group.add_argument(
483483
"--generate-config",
484484
action="store_true",
@@ -526,12 +526,13 @@ def load_or_generate_config(cls, description, argv):
526526
),
527527
)
528528

529-
config_args, remaining_args = config_parser.parse_known_args(argv)
529+
cls.invoke_all_static("add_arguments", parser)
530+
config_args = parser.parse_args(argv)
530531

531532
config_files = find_config_files(search_paths=config_args.config_path)
532533

533534
if not config_files:
534-
config_parser.error(
535+
parser.error(
535536
"Must supply a config file.\nA config file can be automatically"
536537
' generated using "--generate-config -H SERVER_NAME'
537538
' -c CONFIG-FILE"'
@@ -550,7 +551,7 @@ def load_or_generate_config(cls, description, argv):
550551

551552
if config_args.generate_config:
552553
if config_args.report_stats is None:
553-
config_parser.error(
554+
parser.error(
554555
"Please specify either --report-stats=yes or --report-stats=no\n\n"
555556
+ MISSING_REPORT_STATS_SPIEL
556557
)
@@ -609,15 +610,6 @@ def load_or_generate_config(cls, description, argv):
609610
)
610611
generate_missing_configs = True
611612

612-
parser = argparse.ArgumentParser(
613-
parents=[config_parser],
614-
description=description,
615-
formatter_class=argparse.RawDescriptionHelpFormatter,
616-
)
617-
618-
obj.invoke_all_static("add_arguments", parser)
619-
args = parser.parse_args(remaining_args)
620-
621613
config_dict = read_config_files(config_files)
622614
if generate_missing_configs:
623615
obj.generate_missing_files(config_dict, config_dir_path)
@@ -626,7 +618,7 @@ def load_or_generate_config(cls, description, argv):
626618
obj.parse_config_dict(
627619
config_dict, config_dir_path=config_dir_path, data_dir_path=data_dir_path
628620
)
629-
obj.invoke_all("read_arguments", args)
621+
obj.invoke_all("read_arguments", config_args)
630622

631623
return obj
632624

0 commit comments

Comments
 (0)