Completed
Pull Request — master (#2579)
by
unknown
01:56
created

get_exitcode()   C

Complexity

Conditions 7

Size

Total Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
dl 0
loc 23
rs 5.5
c 0
b 0
f 0
1
from pyprint.NullPrinter import NullPrinter
2
3
from coalib.misc import Constants
4
from coalib.output.printers.LogPrinter import LogPrinter
5
6
from pkg_resources import VersionConflict
7
8
9
def get_exitcode(exception, log_printer=None):
10
    log_printer = (LogPrinter(NullPrinter()) if log_printer is None
11
                   else log_printer)
12
13
    if isinstance(exception, KeyboardInterrupt):  # Ctrl+C
14
        print("Program terminated by user.")
15
        exitcode = 130
16
    elif isinstance(exception, EOFError):  # Ctrl+D
17
        print("Found EOF. Exiting gracefully.")
18
        exitcode = 0
19
    elif isinstance(exception, SystemExit):
20
        exitcode = exception.code
21
    elif isinstance(exception, VersionConflict):
22
        log_message = Constants.VERSION_CONFLICT_MESSAGE % str(exception.req)
23
        log_printer.log_exception(log_message, exception)
24
        exitcode = 13
25
    elif isinstance(exception, BaseException):
26
        log_printer.log_exception(Constants.CRASH_MESSAGE, exception)
27
        exitcode = 255
28
    else:
29
        exitcode = 0
30
31
    return exitcode
32