wadebug/ui.py (71 lines of code) (raw):

# -*- coding: utf-8 -*- # Copyright (c) Facebook, Inc. and its affiliates. # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. from __future__ import absolute_import, division, print_function, unicode_literals import os import click from wadebug import results from wadebug.config import Config table_left_alignment = 63 table_right_aligment = 17 color_map = { results.OK: "green", results.Warning: "yellow", results.Problem: "red", results.Skipped: "blue", results.WADebugError: "red", } indicator_icon_map = { results.OK: "✓", results.Warning: "!", results.Problem: "✗", results.Skipped: "-", results.WADebugError: "✗", } def print_program_header(): click.secho("WADebug summary: ", bold=True, nl=False) def print_dev_mode_header(): click.secho("(DEV mode enabled)") def print_result_header(result): result_type = result.__class__ indicator_icon = get_result_indicator_icon(result_type) indicator_color = get_result_color(result_type) click.secho("[{}] ".format(indicator_icon), fg=indicator_color, nl=False) click.secho( "{} - {}".format( result.action.user_facing_name, result.action.short_description ) ) def get_result_color(result_type): color = color_map.get(result_type) if not color: color = "white" return color def get_result_indicator_icon(result_type): indicator_icon = indicator_icon_map.get(result_type) if not indicator_icon: indicator_icon = " " return indicator_icon def print_result_details(result): for field in [result.message, result.details, result.remediation]: click.echo(add_indentation_to_result_field(field)) if Config().development_mode and hasattr(result, "traceback"): click.echo(add_indentation_to_result_field(result.traceback)) def add_indentation_to_result_field(str): return "\n".join([" " + line for line in str.split("\n")]) def print_invalid_config_message(config_file_path, ex): """Message to print when invalid yaml file is provided as config.""" click.secho( "\nConfig file at {config_file_path} is invalid.".format( config_file_path=os.path.join(os.getcwd(), config_file_path) ), fg="red", ) click.secho( "Make sure file contains valid yaml or rename it and wadebug will " "create a new empty config file. Execute command below to make a backup:\n" ) click.secho( "\tmv {config_file_path} {config_file_path}.bak\n".format( config_file_path=config_file_path ), bold=True, ) click.secho("Exception found:", bold=True) click.secho("{parsing_ex}\n".format(parsing_ex=ex))