From 35c423e202f23c319cc6532a87d4779939ff29dc Mon Sep 17 00:00:00 2001 From: Egorka Date: Fri, 14 Sep 2018 16:30:34 +0300 Subject: [PATCH] Console color class --- console/components/ConsoleColor.php | 129 +++++++++++++++++++++++++++++++ console/controllers/ModuleController.php | 3 +- 2 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 console/components/ConsoleColor.php diff --git a/console/components/ConsoleColor.php b/console/components/ConsoleColor.php new file mode 100644 index 0000000..6cad936 --- /dev/null +++ b/console/components/ConsoleColor.php @@ -0,0 +1,129 @@ + '1', + 'dim' => '2', + 'black' => '0;30', + 'dark_gray' => '1;30', + 'blue' => '0;34', + 'light_blue' => '1;34', + 'green' => '0;32', + 'light_green' => '1;32', + 'cyan' => '0;36', + 'light_cyan' => '1;36', + 'red' => '0;31', + 'light_red' => '1;31', + 'purple' => '0;35', + 'light_purple' => '1;35', + 'brown' => '0;33', + 'yellow' => '1;33', + 'light_gray' => '0;37', + 'white' => '1;37', + 'normal' => '0;39', + ]; + + public static $background_colors = [ + 'black' => '40', + 'red' => '41', + 'green' => '42', + 'yellow' => '43', + 'blue' => '44', + 'magenta' => '45', + 'cyan' => '46', + 'light_gray' => '47', + ]; + + public static $options = [ + 'underline' => '4', + 'blink' => '5', + 'reverse' => '7', + 'hidden' => '8', + ]; + public static $EOF = "\n"; + + /** + * Logs a string to console. + * + * @param string $str Input String + * @param string $color Text Color + * @param boolean $newline Append EOF? + * @param [type] $background Background Color + * + * Formatted output + */ + public static function log($str = '', $color = 'normal', $newline = false, $background_color = null) + { + if (is_bool($color)) { + $newline = $color; + $color = 'normal'; + } elseif (is_string($color) && is_string($newline)) { + $background_color = $newline; + $newline = true; + } + $str = $newline ? $str . self::$EOF : $str; + echo self::$color($str, $background_color); + } + + /** + * Anything below this point (and its related variables): + * Colored CLI Output is: (C) Jesse Donat + * https://gist.github.com/donatj/1315354 + * ------------------------------------------------------------- + */ + + /** + * Catches static calls (Wildcard) + * + * @param string $foreground_color Text Color + * @param array $args Options + * + * @return string Colored string + */ + public static function __callStatic($foreground_color, $args) + { + $string = $args[0]; + $colored_string = ''; + + // Check if given foreground color found + if (isset(self::$foreground_colors[$foreground_color])) { + $colored_string .= "\033[" . self::$foreground_colors[$foreground_color] . 'm'; + } else { + die($foreground_color . ' not a valid color'); + } + + array_shift($args); + foreach ($args as $option) { + // Check if given background color found + if (isset(self::$background_colors[$option])) { + $colored_string .= "\033[" . self::$background_colors[$option] . 'm'; + } elseif (isset(self::$options[$option])) { + $colored_string .= "\033[" . self::$options[$option] . 'm'; + } + } + + // Add string and end coloring + $colored_string .= $string . "\033[0m"; + + return $colored_string; + } + + /** + * Plays a bell sound in console (if available) + * + * @param integer $count Bell play count + * + * Bell play string + */ + public static function bell($count = 1) + { + echo str_repeat("\007", $count); + } +} diff --git a/console/controllers/ModuleController.php b/console/controllers/ModuleController.php index 06f7599..acfb88c 100644 --- a/console/controllers/ModuleController.php +++ b/console/controllers/ModuleController.php @@ -6,6 +6,7 @@ namespace console\controllers; +use console\components\ConsoleColor; use core\components\SearchPerformance; use core\entities\ModuleRecord; use core\services\ModuleService; @@ -63,7 +64,7 @@ class ModuleController extends Controller // check exists if (file_exists($path)) { - echo 'Module ' . $name . ' already exists' . PHP_EOL; + echo ConsoleColor::log('Module ' . $name . ' already exists', 'red') . PHP_EOL; return; } // create folder