]> git.ipfire.org Git - nitsi.git/blob - nitsi.in
Fix return codes once again
[nitsi.git] / nitsi.in
1 #!/usr/bin/python3
2
3 import argparse
4 import logging
5
6 from nitsi.logger import init_logging
7 from nitsi.recipe import RecipeExeption
8 from nitsi.test import TestException, test
9
10 logger = logging.getLogger("nitsi")
11 logger.setLevel(logging.DEBUG)
12 # create console handler with a higher log level
13 ch = logging.StreamHandler()
14 ch.setLevel(logging.DEBUG)
15
16 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
17 ch.setFormatter(formatter)
18 # add the handlers to the logger
19 logger.addHandler(ch)
20
21 def main():
22 parser = argparse.ArgumentParser()
23
24 parser.add_argument("-d", "--directory", dest="dir")
25
26 parser.add_argument("-v", "--version", help="Display version and exit",
27 action="store_true", dest="version")
28
29 args = parser.parse_args()
30
31 # We just log the version and exit
32 if args.version:
33 logger.info("nitsi version: {}".format("@PACKAGE_VERSION@"))
34 return 0
35
36 # For all other stuff we need logging to a file
37 log_dir = init_logging(args.dir)
38 # We now going to log everything to log_dir/genaral.log
39 fh = logging.FileHandler("{}/general.log".format(log_dir))
40 fh.setLevel(logging.DEBUG)
41 logger.addHandler(fh)
42 logger.debug("We now logging everything to {}/general.log".format(log_dir))
43
44 # here we run a test
45 try:
46 currenttest = test(args.dir, log_dir)
47 currenttest.read_settings()
48 currenttest.virtual_environ_setup()
49 currenttest.load_recipe()
50 except RecipeExeption as e:
51 logger.exception(e)
52 return 2
53
54 try:
55 currenttest.virtual_environ_start()
56 currenttest.run_recipe()
57 except TestException as e:
58 logger.exception(e)
59 return 1
60 except BaseException as e:
61 logger.exception(e)
62 return 3
63 finally:
64 currenttest.virtual_environ_stop()
65
66 return 0
67
68 if __name__ == "__main__":
69 return_value = main()
70 logger.debug("Return value of main is: {}".format(return_value))
71 exit(return_value)