"""pyinvoke tasks utilities."""
from __future__ import print_function


class Colors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'


def colored(msg, color=Colors.OKGREEN, **kwargs):
    """Return msg wrapped with ansii color tags."""
    return color + msg + Colors.ENDC


def pluralize(word, count, plural=None):
    """Helper to pluralize nouns."""
    if plural is None:
        plural = word + 's'
    if count > 1:
        return plural
    else:
        return word


def confirm(prompt=None, default=False):
    """prompts for yes or no response from the user. Returns True for yes and
    False for no.

    'default' should be set to the default value assumed by the caller when
    user simply types ENTER.

    >>> confirm(prompt='Create Directory?', resp=True)
    Create Directory? [y]|n:
    True
    >>> confirm(prompt='Create Directory?', resp=False)
    Create Directory? [n]|y:
    False
    >>> confirm(prompt='Create Directory?', resp=False)
    Create Directory? [n]|y: y
    True

    """
    YES = ['y', 'yes']
    NO = ['n', 'no']

    if prompt is None:
        prompt = 'Confirm'

    if default:
        prompt = '%s [%s]|%s: ' % (prompt, 'y', 'n')
    else:
        prompt = '%s [%s]|%s: ' % (prompt, 'n', 'y')

    while True:
        ans = raw_input(prompt).lower()
        if not ans:
            return default
        if ans not in (YES + NO):
            print('please enter y or n.')
            continue
        if ans in YES:
            return True
        if ans in NO:
            return False
