blob: adae6dfe2b4e76933a18cb87a49750bee8cb7310 [file] [log] [blame]
Alex Savatieievc9055712019-03-01 14:43:56 -06001import os
2
Alex Savatieievc9055712019-03-01 14:43:56 -06003from cfg_checker.common import logger_cli
4from cfg_checker.helpers import args_utils
5from cfg_checker.reports import reporter
6
Alex3ebc5632019-04-18 16:47:18 -05007import comparer
8
9import validator
10
Alex Savatieievc9055712019-03-01 14:43:56 -060011
12def do_list(args):
13 logger_cli.info("# Reclass list")
Alex41485522019-04-12 17:26:18 -050014 _arg_path = args_utils.get_arg(args, 'models_path')
15 logger_cli.info("-> Current path is: {}".format(_arg_path))
16 _path = args_utils.get_path_arg(_arg_path)
Alex3ebc5632019-04-18 16:47:18 -050017
18 logger_cli.info("# ...models path is '{}'".format(_path))
19
Alex Savatieievc9055712019-03-01 14:43:56 -060020 models = {}
21 for _folder in os.listdir(args.models_path):
22 # validate item as a model
23 _model_path = os.path.join(
24 args.models_path,
25 _folder
26 )
27 _validated = validator.basic_model_validation_by_path(_model_path)
Alex3ebc5632019-04-18 16:47:18 -050028
Alex Savatieievc9055712019-03-01 14:43:56 -060029 if not _validated:
30 logger_cli.info("-> '{}' not a valid model".format(_folder))
31 continue
32 else:
33 models[_folder] = _model_path
Alex3ebc5632019-04-18 16:47:18 -050034
Alex Savatieievc9055712019-03-01 14:43:56 -060035 logger_cli.info("-> '{}' at '{}'".format(_folder, _model_path))
Alex3ebc5632019-04-18 16:47:18 -050036
Alex Savatieievc9055712019-03-01 14:43:56 -060037 # TODO: collect info about the model
38
39 return
40
41
42def do_diff(args):
Alexb8af13a2019-04-16 18:38:12 -050043 logger_cli.info("# Reclass comparer (HTML report)")
Alex41485522019-04-12 17:26:18 -050044 _filename = args_utils.get_arg(args, 'html')
Alex Savatieievc9055712019-03-01 14:43:56 -060045 # checking folder params
46 _model1 = args_utils.get_path_arg(args.model1)
47 _model2 = args_utils.get_path_arg(args.model2)
Alex3ebc5632019-04-18 16:47:18 -050048
Alex Savatieievc9055712019-03-01 14:43:56 -060049 # Do actual compare using hardcoded model names
50 mComparer = comparer.ModelComparer()
51
52 mComparer.model_name_1 = os.path.split(_model1)[1]
53 mComparer.model_path_1 = _model1
54 mComparer.model_name_2 = os.path.split(_model2)[1]
55 mComparer.model_path_2 = _model2
Alex3ebc5632019-04-18 16:47:18 -050056
Alex Savatieievc9055712019-03-01 14:43:56 -060057 mComparer.load_model_tree(
58 mComparer.model_name_1,
59 mComparer.model_path_1
60 )
61 mComparer.load_model_tree(
62 mComparer.model_name_2,
63 mComparer.model_path_2
64 )
65
66 diffs = mComparer.generate_model_report_tree()
67
68 report = reporter.ReportToFile(
69 reporter.HTMLModelCompare(),
70 _filename
71 )
72 logger_cli.info("# Generating report to {}".format(_filename))
73 report({
74 "nodes": {},
75 "diffs": diffs
76 })