scripts: refactor validate_configs.py

Config validation for a single config is extracted to a separate
function.

Tested:

An invalid config still results in exit code 1 and error output.
When all configs are valid, exit code is still 0.

Change-Id: I98367dd5aebe0c4249f55d5056252761571528a6
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
diff --git a/scripts/validate_configs.py b/scripts/validate_configs.py
index ae5fb19..393d9a8 100755
--- a/scripts/validate_configs.py
+++ b/scripts/validate_configs.py
@@ -147,21 +147,9 @@
         "unexpected_pass": [],
     }
     for config_file, config in zip(config_files, configs):
-        name = os.path.split(config_file)[1]
-        expect_fail = name in expected_fails
-        try:
-            validator.validate(config)
-            if expect_fail:
-                results["unexpected_pass"].append(name)
-                if not getattr(args, "continue"):
-                    break
-        except jsonschema.exceptions.ValidationError as e:
-            if not expect_fail:
-                results["invalid"].append(name)
-                if args.verbose:
-                    print(e)
-            if expect_fail or getattr(args, "continue"):
-                continue
+        if not validate_single_config(
+            args, config_file, config, expected_fails, validator, results
+        ):
             break
 
     exit_status = 0
@@ -183,5 +171,27 @@
     sys.exit(exit_status)
 
 
+def validate_single_config(
+    args, config_file, config, expected_fails, validator, results
+):
+    name = os.path.split(config_file)[1]
+    expect_fail = name in expected_fails
+    try:
+        validator.validate(config)
+        if expect_fail:
+            results["unexpected_pass"].append(name)
+            if not getattr(args, "continue"):
+                return False
+    except jsonschema.exceptions.ValidationError as e:
+        if not expect_fail:
+            results["invalid"].append(name)
+            if args.verbose:
+                print(e)
+        if expect_fail or getattr(args, "continue"):
+            return True
+        return False
+    return True
+
+
 if __name__ == "__main__":
     main()