]> git.ipfire.org Git - nitsi.git/blobdiff - nitsi.in
.gitignore: Don't list generated nitsi script as untracked file
[nitsi.git] / nitsi.in
index a87aa0a82d407f9c56dd9b94fbe7157f33522e1b..fc1ce8e0af9f2b0ee5fa44f37fd2989752cacebc 100755 (executable)
--- a/nitsi.in
+++ b/nitsi.in
@@ -1,41 +1,71 @@
 #!/usr/bin/python3
 
-from nitsi.test import test
+import argparse
 import logging
 
+from nitsi.logger import init_logging
+from nitsi.recipe import RecipeExeption
+from nitsi.test import TestException, test
+
 logger = logging.getLogger("nitsi")
 logger.setLevel(logging.DEBUG)
-# create file handler which logs even debug messages
-fh = logging.FileHandler('nitsi.log')
-fh.setLevel(logging.DEBUG)
 # create console handler with a higher log level
 ch = logging.StreamHandler()
 ch.setLevel(logging.DEBUG)
 
 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
-fh.setFormatter(formatter)
 ch.setFormatter(formatter)
 # add the handlers to the logger
-logger.addHandler(fh)
 logger.addHandler(ch)
 
-if __name__ == "__main__":
-    import argparse
-
+def main():
     parser = argparse.ArgumentParser()
 
     parser.add_argument("-d", "--directory", dest="dir")
 
+    parser.add_argument("-v", "--version", help="Display version and exit",
+                    action="store_true", dest="version")
+
     args = parser.parse_args()
 
-    currenttest = test(args.dir)
-    currenttest.read_settings()
-    currenttest.virtual_environ_setup()
-    currenttest.load_recipe()
+    # We just log the version and exit
+    if args.version:
+        logger.info("nitsi version: {}".format("@PACKAGE_VERSION@"))
+        return 0
+
+    # For all other stuff we need logging to a file
+    log_dir = init_logging(args.dir)
+    # We now going to log everything to log_dir/genaral.log
+    fh = logging.FileHandler("{}/general.log".format(log_dir))
+    fh.setLevel(logging.DEBUG)
+    logger.addHandler(fh)
+    logger.debug("We now logging everything to {}/general.log".format(log_dir))
+
+    # here we run a test
+    try:
+        currenttest = test(args.dir, log_dir)
+        currenttest.read_settings()
+        currenttest.virtual_environ_setup()
+        currenttest.load_recipe()
+    except RecipeExeption as e:
+        logger.exception(e)
+        return 2
+
     try:
         currenttest.virtual_environ_start()
         currenttest.run_recipe()
+    except TestException as e:
+        logger.exception(e)
+        return 1
     except BaseException as e:
-        print(e)
+        logger.exception(e)
+        return 3
     finally:
-        currenttest.virtual_environ_stop()
\ No newline at end of file
+        currenttest.virtual_environ_stop()
+
+    return 0
+
+if __name__ == "__main__":
+   return_value = main()
+   logger.debug("Return value of main is: {}".format(return_value))
+   exit(return_value)