]>
git.ipfire.org Git - nitsi.git/blob - nitsi.in
7 from nitsi
.logger
import init_logging
, Log_Formatter
8 from nitsi
.recipe
import RecipeExeption
10 from nitsi
.settings
import settings_parse_copy_from
, NitsiSettings
12 logger
= logging
.getLogger("nitsi")
14 # create console handler
15 ch
= logging
.StreamHandler()
16 formatter
= Log_Formatter()
17 ch
.setFormatter(formatter
)
18 # add the handler to the logger
22 parser
= argparse
.ArgumentParser()
24 parser
.add_argument( "--log-level", choices
=[ "debug", "error", "info", "warning" ], dest
="log_level", default
="info")
26 parser
.add_argument("-v", "--version", help="Display version and exit",
27 action
="store_true", dest
="version")
29 # Subparser for different commands
30 subparsers
= parser
.add_subparsers(dest
="subparsers_name")
32 parser_run_test
= subparsers
.add_parser('run-test', help='run-test help')
33 parser_run_test
.add_argument("-d", "--directory", dest
="dir", default
=None)
34 parser_run_test
.add_argument("-r", "--recipe", dest
="recipe", default
=None)
35 parser_run_test
.add_argument("-s", "--settings", dest
="settings", default
=None)
36 parser_run_test
.add_argument("--name", dest
="name", default
=None)
37 parser_run_test
.add_argument("--description", dest
="desc", default
=None)
38 parser_run_test
.add_argument("--copy-to", dest
="copy_to", default
=None)
39 parser_run_test
.add_argument("--copy-from", dest
="copy_from", default
=None, nargs
='+')
40 parser_run_test
.add_argument("--virtual-environment", dest
="virtual_environ_path", default
=None)
42 args
= parser
.parse_args()
44 # We just log the version and exit
46 logger
.info("nitsi version: {}".format("@PACKAGE_VERSION@"))
51 # We are doing this after we logged the version
52 # to avoid that the version is not shown because of the log level
53 if args
.log_level
== "info":
54 logger
.setLevel(logging
.INFO
)
55 elif args
.log_level
== "debug":
56 logger
.setLevel(logging
.DEBUG
)
57 elif args
.log_level
== "warning":
58 logger
.setLevel(logging
.WARNING
)
59 elif args
.log_level
== "error":
60 logger
.setLevel(logging
.ERROR
)
62 # Here we are going to run a test
63 if args
.subparsers_name
== "run-test":
64 if not (args
.dir or args
.recipe
):
65 logger
.error("You need to provide at least a director of a test '-d' or a recipe file '-r'")
68 if (args
.dir and args
.recipe
) or (args
.dir and args
.settings
):
69 logger
.error("You cannot use the options '-d' and '-r' or '-d' and '-s' at the same time")
72 # For all other stuff we need logging to a file
74 log_dir
= init_logging(args
.dir)
76 log_dir
= init_logging(args
.recipe
)
78 # We now going to log everything to log_dir/genaral.log
79 fh
= logging
.FileHandler("{}/general.log".format(log_dir
))
81 logger
.debug("We now logging everything to {}/general.log".format(log_dir
))
84 settings
= nitsi
.settings
.NitsiSettings(priority_list
=["cmd", "settings-file", "nitsi-default"])
87 settings
.set_config_value("name", args
.name
, type="cmd")
89 settings
.set_config_value("description", args
.desc
, type="cmd")
91 settings
.set_config_value("copy_to", args
.copy_to
, type="cmd")
93 settings
.set_config_value("copy_from", nitsi
.settings
.settings_parse_copy_from(args
.copy_from
), type="cmd")
94 if args
.virtual_environ_path
:
95 path
= args
.virtual_environ_path
96 if not os
.path
.isabs(path
):
97 path
= os
.path
.abspath(path
)
98 settings
.set_config_value("virtual_environ_path", path
, type="cmd")
102 currenttest
= nitsi
.test
.Test(
105 recipe_file
=args
.recipe
,
106 settings_file
=args
.settings
,
108 currenttest
.virtual_environ_setup_stage_1()
109 currenttest
.load_recipe()
110 currenttest
.virtual_environ_setup_stage_2()
111 except RecipeExeption
as e
:
116 currenttest
.virtual_environ_start()
117 currenttest
.run_recipe()
118 except nitsi
.test
.TestException
as e
:
121 except BaseException
as e
:
125 currenttest
.virtual_environ_stop()
129 if __name__
== "__main__":
130 return_value
= main()
131 logger
.debug("Return value of main is: {}".format(return_value
))