Completed
Pull Request — master (#1847)
by Tushar
03:13 queued 01:33
created

coalib.get_file()   A

Complexity

Conditions 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 1
dl 0
loc 2
rs 10
1
# This program is free software: you can redistribute it and/or modify it
2
# under the terms of the GNU Affero General Public License as published by the
3
# Free Software Foundation, either version 3 of the License, or (at your
4
# option) any later version.
5
#
6
# This program is distributed in the hope that it will be useful, but WITHOUT
7
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
8
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License
9
# for more details.
10
#
11
# You should have received a copy of the GNU Affero General Public License
12
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
13
14
import http.server
15
import json
16
import os
17
import socketserver
18
import webbrowser
19
20
from coalib.coala_main import run_coala
21
from coalib.output.JSONEncoder import create_json_encoder
22
from coalib.output.printers.ListLogPrinter import ListLogPrinter
23
from coalib.parsing.DefaultArgParser import default_arg_parser
24
from coalib.misc import Constants
25
26
27
def get_file(file_name):
28
    return os.path.join(os.path.dirname(__file__), file_name)
29
30
31
def main():
32
    arg_parser = default_arg_parser()
33
    args = arg_parser.parse_args()
34
    if args.noupdate is False:
35
        log_printer = ListLogPrinter()
36
        results, exitcode, file_dict = run_coala(
37
            log_printer=log_printer, autoapply=False)
38
        retval = {"results": results}
39
        retval["logs"] = log_printer.logs
40
        JSONEncoder = create_json_encoder(use_relpath=False)
41
        result_file = get_file(Constants.CONFIGS['results_file'])
42
        file_data = get_file(Constants.CONFIGS['file_data'])
43
        with open(result_file, 'w+') as fp:
44
            json.dump(retval, fp,
45
                      cls=JSONEncoder,
46
                      sort_keys=True,
47
                      indent=2,
48
                      separators=(',', ': '))
49
        with open(file_data, 'w+') as fp:
50
            json.dump(file_dict, fp,
51
                      cls=JSONEncoder,
52
                      sort_keys=True,
53
                      indent=2,
54
                      separators=(',', ': '))
55
    if args.nolaunch is False:
56
        Handler = http.server.SimpleHTTPRequestHandler
57
        httpd = socketserver.TCPServer(("", Constants.PORT), Handler)
58
        print("serving at ", Constants.URL)
59
        print("Press Ctrl+C to end the coala-html session")
60
        try:
61
            httpd.serve_forever()
62
        except Exception as e:
63
            print(e)
64
        webbrowser.open(Constants.URL, new=2)
65