]> git.ipfire.org Git - nitsi.git/blobdiff - nitsi.in
Make the interactive error handling a cmd argument
[nitsi.git] / nitsi.in
index 657504cbb4757a0370305300049d70daf6f1be6a..80d3231d09b65fe656ef62fafffe911cc6452ed1 100755 (executable)
--- a/nitsi.in
+++ b/nitsi.in
@@ -2,11 +2,12 @@
 
 import argparse
 import logging
+import os
 
 from nitsi.logger import init_logging, Log_Formatter
 from nitsi.recipe import RecipeExeption
 import nitsi.test
-import nitsi.settings
+from nitsi.settings import settings_parse_copy_from, NitsiSettings
 
 logger = logging.getLogger("nitsi")
 
@@ -37,6 +38,7 @@ def main():
     parser_run_test.add_argument("--copy-to", dest="copy_to", default=None)
     parser_run_test.add_argument("--copy-from", dest="copy_from", default=None, nargs='+')
     parser_run_test.add_argument("--virtual-environment", dest="virtual_environ_path", default=None)
+    parser_run_test.add_argument("--interactive-error-handling", dest="interactive_error_handling", default=False, action="store_true")
 
     args = parser.parse_args()
 
@@ -58,7 +60,7 @@ def main():
     elif args.log_level == "error":
         logger.setLevel(logging.ERROR)
 
-
+    # Here we are going to run a test
     if args.subparsers_name == "run-test":
         if not (args.dir or args.recipe):
             logger.error("You need to provide at least a director of a test '-d' or a recipe file '-r'")
@@ -79,18 +81,24 @@ def main():
         logger.addHandler(fh)
         logger.debug("We now logging everything to {}/general.log".format(log_dir))
 
-        # Build up settings dict
-        settings = {}
+        # Build up settings
+        settings = nitsi.settings.NitsiSettings(priority_list=["cmd", "settings-file", "nitsi-default"])
+
         if args.name:
-            settings["name"] = args.name
+            settings.set_config_value("name", args.name, type="cmd")
         if args.desc:
-            settings["description"] = args.desc
+            settings.set_config_value("description", args.desc, type="cmd")
         if args.copy_to:
-            settings["copy_to"] = args.copy_to
+            settings.set_config_value("copy_to", args.copy_to, type="cmd")
         if args.copy_from:
-            settings["copy_from"] =  nitsi.settings.settings_parse_copy_from(args.copy_from)
+            settings.set_config_value("copy_from", nitsi.settings.settings_parse_copy_from(args.copy_from), type="cmd")
         if args.virtual_environ_path:
-            settings["virtual_environ_path"] = args.virtual_environ_path
+            path = args.virtual_environ_path
+            if not os.path.isabs(path):
+                path = os.path.abspath(path)
+            settings.set_config_value("virtual_environ_path", path, type="cmd")
+        if args.interactive_error_handling:
+            settings.set_config_value("interactive_error_handling", True, type="cmd")
 
         # here we run a test
         try:
@@ -99,10 +107,10 @@ def main():
                 dir=args.dir,
                 recipe_file=args.recipe,
                 settings_file=args.settings,
-                cmd_settings=settings)
-            currenttest.read_settings()
-            currenttest.virtual_environ_setup()
+                settings=settings)
+            currenttest.virtual_environ_setup_stage_1()
             currenttest.load_recipe()
+            currenttest.virtual_environ_setup_stage_2()
         except RecipeExeption as e:
             logger.exception(e)
             return 2