]> git.ipfire.org Git - nitsi.git/blob - nitsi.in
Allow including of recipe files
[nitsi.git] / nitsi.in
1 #!/usr/bin/python3
2
3 import argparse
4 import logging
5
6 from nitsi.logger import init_logging, Log_Formatter
7 from nitsi.recipe import RecipeExeption
8 import nitsi.test
9
10 logger = logging.getLogger("nitsi")
11
12 # create console handler
13 ch = logging.StreamHandler()
14 formatter = Log_Formatter()
15 ch.setFormatter(formatter)
16 # add the handler to the logger
17 logger.addHandler(ch)
18
19 def main():
20 parser = argparse.ArgumentParser()
21
22 parser.add_argument("-d", "--directory", dest="dir")
23
24 parser.add_argument( "--log-level", choices=[ "debug", "error", "info", "warning" ], dest="log_level", default="info")
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
37 # Set the log level
38 # We are doing this after we logged the version
39 # to avoid that the version is not shown because of the log level
40 if args.log_level == "info":
41 logger.setLevel(logging.INFO)
42 elif args.log_level == "debug":
43 logger.setLevel(logging.DEBUG)
44 elif args.log_level == "warning":
45 logger.setLevel(logging.WARNING)
46 elif args.log_level == "error":
47 logger.setLevel(logging.ERROR)
48
49 # For all other stuff we need logging to a file
50 log_dir = init_logging(args.dir)
51 # We now going to log everything to log_dir/genaral.log
52 fh = logging.FileHandler("{}/general.log".format(log_dir))
53 logger.addHandler(fh)
54 logger.debug("We now logging everything to {}/general.log".format(log_dir))
55
56 # here we run a test
57 try:
58 currenttest = nitsi.test.Test(args.dir, log_dir)
59 currenttest.read_settings()
60 currenttest.virtual_environ_setup()
61 currenttest.load_recipe()
62 except RecipeExeption as e:
63 logger.exception(e)
64 return 2
65
66 try:
67 currenttest.virtual_environ_start()
68 currenttest.run_recipe()
69 except nitsi.test.TestException as e:
70 logger.exception(e)
71 return 1
72 except BaseException as e:
73 logger.exception(e)
74 return 3
75 finally:
76 currenttest.virtual_environ_stop()
77
78 return 0
79
80 if __name__ == "__main__":
81 return_value = main()
82 logger.debug("Return value of main is: {}".format(return_value))
83 exit(return_value)