Passed
Push — master ( 66e359...958bc0 )
by Jan
04:16 queued 12s
created

oval_graph.command_line.catch_errors()   A

Complexity

Conditions 3

Size

Total Lines 8
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 8
nop 2
dl 0
loc 8
ccs 8
cts 8
cp 1
crap 3
rs 10
c 0
b 0
f 0
1
"""
2
    This file contains entry points for commands
3
"""
4
5 1
import traceback
6
7 1
from .command_line_client.arf_to_html import ArfToHtml
8 1
from .command_line_client.arf_to_json import ArfToJson
9 1
from .command_line_client.json_to_html import JsonToHtml
10 1
from .exceptions import NotTestedRule
11
12 1
C_RED = '\033[91m'
13 1
C_END = '\033[0m'
14 1
ERRORS = (ValueError, TypeError, ResourceWarning, NotTestedRule)
15
16
17 1
def arf_to_graph(params=None):
18 1
    catch_errors(ArfToHtml, params)
19
20
21 1
def arf_to_json(params=None):
22 1
    catch_errors(ArfToJson, params)
23
24
25 1
def json_to_graph(params=None):
26 1
    catch_errors(JsonToHtml, params)
27
28
29 1
def catch_errors(client_class, params):
30 1
    client = client_class(params)
31 1
    try:
32 1
        main(client)
33 1
    except ERRORS as error:
34 1
        if client.verbose:
35 1
            traceback.print_exc()
36 1
        print('{}Error: {}{}'.format(C_RED, error, C_END))
37
38
39 1
def main(client):
40 1
    client.load_file()
41 1
    rules = client.search_rules_id()
42 1
    if len(rules) > 1:
43 1
        answers = client.run_gui_and_return_answers()
44 1
        if answers is not None:
45 1
            return client.prepare_data(answers)
46 1
    return client.prepare_data({'rules': [rules[0]]})
47
48
49 1
if __name__ == '__main__':
50 1
    import argparse
51
52 1
    parser = argparse.ArgumentParser()
53 1
    subparsers = parser.add_subparsers()
54
55 1
    parser_arf_to_graph = subparsers.add_parser(
56
        'arf-to-graph', help='Executes the arf-to-graph command.')
57 1
    parser_arf_to_graph.set_defaults(command=arf_to_graph)
58
59 1
    parser_arf_to_json = subparsers.add_parser(
60
        'arf-to-json', help='Executes the arf-to-json command.')
61 1
    parser_arf_to_json.set_defaults(command=arf_to_json)
62
63 1
    parser_json_to_graph = subparsers.add_parser(
64
        'json-to-graph', help='Executes the json-to-graph command.')
65 1
    parser_json_to_graph.set_defaults(command=json_to_graph)
66
67 1
    args, command_args = parser.parse_known_args()
68
    args.command(command_args)
69