"""
Console output
"""


import timeit
from fabric.colors import *


################################################################################
# Echo
################################################################################


# System


def echo_task(message, error=False):
	color = red if error == True else yellow
	
	print(color('\n=====> %s' % message))


def echo_subtask(message, error=False):
	color = red if error == True else cyan

	print(cyan('\n-----> %s' % message))


# For user


def echo_comment(message, error=False):
	color = red if error == True else blue

	print(color(message))


def echo_status(message, error=False):
	color = red if error == True else green

	print(color(message))


################################################################################
# Print
################################################################################


# Task


def print_task_stats(task_name, start_time, error=None):
	status_tuple = (task_name, time_string(start_time))

	if error != None:
		if (type(error) in [Exception, str]):
			echo_comment(('\n[FATAL ERROR]\n\n%s' % error), error=True)
			
		echo_status(('\n=====> Task "%s" failed %s \n' % status_tuple), error=True)
	else:
		echo_status('\n=====> Task "%s" finished %s \n' % status_tuple)
	

# Helpers


def time_string(start_time):
	stop_time = timeit.default_timer()
	delta_time = stop_time - start_time

	return '(time: %s seconds)' % delta_time
