Browse Source

Move creation of ArgumentParser to caller

Erik Johnston 4 years ago
parent
commit
fdefb9e29a
2 changed files with 8 additions and 11 deletions
  1. 3 1
      synapse/app/admin_cmd.py
  2. 5 10
      synapse/config/_base.py

+ 3 - 1
synapse/app/admin_cmd.py

@@ -13,6 +13,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+import argparse
 import logging
 import sys
 
@@ -105,7 +106,8 @@ def export_data_command(hs, user_id, directory):
 
 
 def start(config_options):
-    parser = HomeServerConfig.create_argument_parser("Synapse Admin Command")
+    parser = argparse.ArgumentParser(description="Synapse Admin Command")
+    HomeServerConfig.add_arguments_to_parser(parser)
 
     subparser = parser.add_subparsers(
         title="Admin Commands",

+ 5 - 10
synapse/config/_base.py

@@ -231,27 +231,24 @@ class Config(object):
 
         Returns: Config object.
         """
-        config_parser = cls.create_argument_parser(description)
+        config_parser = argparse.ArgumentParser(description=description)
+        cls.add_arguments_to_parser(config_parser)
         obj, _ = cls.load_config_with_parser(config_parser, argv)
 
         return obj
 
     @classmethod
-    def create_argument_parser(cls, description):
-        """Create an ArgumentParser instance with all the config flags.
+    def add_arguments_to_parser(cls, config_parser):
+        """Adds all the config flags to an ArgumentParser.
 
         Doesn't support config-file-generation: used by the worker apps.
 
         Used for workers where we want to add extra flags/subcommands.
 
         Args:
-            description (str): App description
-
-        Returns:
-            ArgumentParser
+            config_parser (ArgumentParser): App description
         """
 
-        config_parser = argparse.ArgumentParser(description=description)
         config_parser.add_argument(
             "-c",
             "--config-path",
@@ -273,8 +270,6 @@ class Config(object):
         # `add_arguments` should be side effect free so this is probably fine.
         cls.invoke_all_static("add_arguments", config_parser)
 
-        return config_parser
-
     @classmethod
     def load_config_with_parser(cls, config_parser, argv):
         """Parse the commandline and config files with the given parser