[docs]def mode_normal(console_printer, log_printer, args, debug=False):
"""
This is the default coala mode. User interaction is allowed in this mode.
:param console_printer: Object to print messages on the console.
:param log_printer: Deprecated.
:param args: Alternative pre-parsed CLI arguments.
:param debug: Run in debug mode, bypassing multiprocessing,
and not catching any exceptions.
"""
import functools
from coalib.coala_main import run_coala
from coalib.output.ConsoleInteraction import (
acquire_settings, nothing_done,
print_results, print_section_beginning)
partial_print_sec_beg = functools.partial(
print_section_beginning,
console_printer)
results, exitcode, _ = run_coala(
print_results=print_results,
acquire_settings=acquire_settings,
print_section_beginning=partial_print_sec_beg,
nothing_done=nothing_done,
console_printer=console_printer,
args=args,
debug=debug)
return exitcode
[docs]def mode_non_interactive(console_printer, args, debug=False):
import functools
from coalib.coala_main import run_coala
from coalib.output.ConsoleInteraction import (
print_results_no_input, print_section_beginning)
partial_print_sec_beg = functools.partial(
print_section_beginning,
console_printer)
results, exitcode, _ = run_coala(
print_results=print_results_no_input,
print_section_beginning=partial_print_sec_beg,
force_show_patch=True,
console_printer=console_printer,
args=args,
debug=debug)
return exitcode
[docs]def mode_json(args, debug=False):
import json
from coalib.coala_main import run_coala
from coalib.output.Logging import configure_json_logging
from coalib.output.JSONEncoder import create_json_encoder
if args.log_json:
log_stream = configure_json_logging()
JSONEncoder = create_json_encoder(use_relpath=args.relpath)
results, exitcode, _ = run_coala(args=args, debug=debug)
retval = {'results': results}
if args.log_json:
retval['logs'] = [json.loads(line) for line in
log_stream.getvalue().splitlines()]
if args.output:
filename = str(args.output[0])
with open(filename, 'w') as fp:
json.dump(retval, fp,
cls=JSONEncoder,
sort_keys=True,
indent=2,
separators=(',', ': '))
else:
print(json.dumps(retval,
cls=JSONEncoder,
sort_keys=True,
indent=2,
separators=(',', ': ')))
return 0 if args.show_bears else exitcode