Passed
Pull Request — master (#202)
by Jan
03:42
created

oval_graph.command_line.arf_to_json()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 2
rs 10
c 0
b 0
f 0
ccs 0
cts 2
cp 0
cc 1
nop 1
crap 2
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
    try:
31
        main(client_class(params))
32
    except ERRORS as error:
33
        if any(param in params for param in ("-v", "--verbose")):
34
            traceback.print_exc()
35
        print('{}Error: {}{}'.format(C_RED, error, C_END))
36
37
38
def main(client):
39
    rules = client.search_rules_id()
40
    if len(rules) > 1:
41
        answers = client.run_gui_and_return_answers()
42
        if answers is not None:
43
            client.prepare_data(answers)
44
    else:
45
        client.prepare_data({'rules': [rules[0]]})
46
47
48
if __name__ == '__main__':
49
    import argparse
50
51
    parser = argparse.ArgumentParser()
52
    subparsers = parser.add_subparsers()
53
54
    parser_arf_to_graph = subparsers.add_parser(
55
        'arf-to-graph', help='Executes the arf-to-graph command.')
56
    parser_arf_to_graph.set_defaults(command=arf_to_graph)
57
58
    parser_arf_to_json = subparsers.add_parser(
59
        'arf-to-json', help='Executes the arf-to-json command.')
60
    parser_arf_to_json.set_defaults(command=arf_to_json)
61
62
    parser_json_to_graph = subparsers.add_parser(
63
        'json-to-graph', help='Executes the json-to-graph command.')
64
    parser_json_to_graph.set_defaults(command=json_to_graph)
65
66
    args, command_args = parser.parse_known_args()
67
    args.command(command_args)
68