Passed
Pull Request — master (#202)
by Jan
04:11
created

oval_graph.command_line.main()   A

Complexity

Conditions 3

Size

Total Lines 9
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

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