Browse Source

Factor out schema type parsing (#303).

Dan Helfman 3 months ago
parent
commit
903308864c
2 changed files with 15 additions and 11 deletions
  1. 1 11
      borgmatic/commands/arguments.py
  2. 14 0
      borgmatic/config/schema.py

+ 1 - 11
borgmatic/commands/arguments.py

@@ -1,5 +1,4 @@
 import collections
 import collections
-import decimal
 import io
 import io
 import itertools
 import itertools
 import json
 import json
@@ -377,16 +376,7 @@ def add_arguments_from_schema(arguments_group, schema, unparsed_arguments, names
 
 
         description = description.replace('%', '%%')
         description = description.replace('%', '%%')
 
 
-    try:
-        argument_type = {
-            'string': str,
-            'integer': int,
-            'number': decimal.Decimal,
-            'boolean': bool,
-            'array': str,
-        }[schema_type]
-    except KeyError:
-        raise ValueError(f'Unknown type in configuration schema: {schema_type}')
+    argument_type = borgmatic.config.schema.parse_type(schema_type)
 
 
     arguments_group.add_argument(
     arguments_group.add_argument(
         f"--{flag_name.replace('_', '-')}",
         f"--{flag_name.replace('_', '-')}",

+ 14 - 0
borgmatic/config/schema.py

@@ -1,3 +1,4 @@
+import decimal
 import itertools
 import itertools
 
 
 
 
@@ -20,3 +21,16 @@ def get_properties(schema):
         )
         )
 
 
     return schema.get('properties', {})
     return schema.get('properties', {})
+
+
+def parse_type(schema_type):
+    try:
+        return {
+            'string': str,
+            'integer': int,
+            'number': decimal.Decimal,
+            'boolean': bool,
+            'array': str,
+        }[schema_type]
+    except KeyError:
+        raise ValueError(f'Unknown type in configuration schema: {schema_type}')