Source code for coalib.misc.Exceptions

from pyprint.NullPrinter import NullPrinter

from coalib.misc import Constants
from coalib.output.printers.LogPrinter import LogPrinter

from pkg_resources import VersionConflict


[docs]def get_exitcode(exception, log_printer=None): log_printer = (LogPrinter(NullPrinter()) if log_printer is None else log_printer) if isinstance(exception, KeyboardInterrupt): # Ctrl+C print('Program terminated by user.') exitcode = 130 elif isinstance(exception, EOFError): # Ctrl+D print('Found EOF. Exiting gracefully.') exitcode = 0 elif isinstance(exception, SystemExit): exitcode = exception.code elif isinstance(exception, VersionConflict): log_message = Constants.VERSION_CONFLICT_MESSAGE % str(exception.req) log_printer.log_exception(log_message, exception) exitcode = 13 elif isinstance(exception, BaseException): log_printer.log_exception(Constants.CRASH_MESSAGE, exception) exitcode = 255 else: exitcode = 0 return exitcode