mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-25 20:18:38 +02:00
60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class TerminalColors:
|
|
"""Colors for terminal outputs
|
|
(makes reading the logs WAY easier)"""
|
|
|
|
HEADER = "\033[95m"
|
|
OKBLUE = "\033[94m"
|
|
OKCYAN = "\033[96m"
|
|
OKGREEN = "\033[92m"
|
|
YELLOW = "\033[93m"
|
|
FAIL = "\033[91m"
|
|
ENDC = "\033[0m"
|
|
BOLD = "\033[1m"
|
|
UNDERLINE = "\033[4m"
|
|
BackgroundLightYellow = "\033[103m"
|
|
|
|
|
|
class TerminalHelper:
|
|
def query_yes_no(question: str, default="yes") -> bool:
|
|
"""Ask a yes/no question via raw_input() and return their answer.
|
|
|
|
"question" is a string that is presented to the user.
|
|
"default" is the presumed answer if the user just hits <Enter>.
|
|
It must be "yes" (the default), "no" or None (meaning
|
|
an answer is required of the user).
|
|
|
|
The "answer" return value is True for "yes" or False for "no".
|
|
"""
|
|
valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False}
|
|
if default is None:
|
|
prompt = " [y/n] "
|
|
elif default == "yes":
|
|
prompt = " [Y/n] "
|
|
elif default == "no":
|
|
prompt = " [y/N] "
|
|
else:
|
|
raise ValueError("invalid default answer: '%s'" % default)
|
|
|
|
while True:
|
|
logger.info(question + prompt)
|
|
choice = input().lower()
|
|
if default is not None and choice == "":
|
|
return valid[default]
|
|
elif choice in valid:
|
|
return valid[choice]
|
|
else:
|
|
logger.info("Please respond with 'yes' or 'no' " "(or 'y' or 'n').\n")
|
|
|
|
def print_debug(print_condition: bool, print_statement: str):
|
|
"""This function reduces complexity of debug statements
|
|
in other functions.
|
|
It uses the logger to write the given print_statement to the
|
|
terminal if print_condition is TRUE"""
|
|
# DEBUG:
|
|
if print_condition:
|
|
logger.info(print_statement)
|