Update console features

This commit is contained in:
Maarten 2019-12-24 02:25:13 +01:00
parent f8a845527e
commit f56bc7952a
3 changed files with 64 additions and 58 deletions

View file

@ -2,48 +2,48 @@
namespace Cli\Assets; namespace Cli\Assets;
class Colors { trait Colors {
/** /**
* @var array * @var array
*/ */
private static $foreground_colors = []; private $foreground_colors = [];
/** /**
* @var array * @var array
*/ */
private static $background_colors = []; private $background_colors = [];
/** /**
* Colors constructor. * Colors constructor.
*/ */
private static function setColors() private function setColors()
{ {
self::$foreground_colors['black'] = '0;30'; $this->foreground_colors['black'] = '0;30';
self::$foreground_colors['dark_gray'] = '1;30'; $this->foreground_colors['dark_gray'] = '1;30';
self::$foreground_colors['blue'] = '0;34'; $this->foreground_colors['blue'] = '0;34';
self::$foreground_colors['light_blue'] = '1;34'; $this->foreground_colors['light_blue'] = '1;34';
self::$foreground_colors['green'] = '0;32'; $this->foreground_colors['green'] = '0;32';
self::$foreground_colors['light_green'] = '1;32'; $this->foreground_colors['light_green'] = '1;32';
self::$foreground_colors['cyan'] = '0;36'; $this->foreground_colors['cyan'] = '0;36';
self::$foreground_colors['light_cyan'] = '1;36'; $this->foreground_colors['light_cyan'] = '1;36';
self::$foreground_colors['red'] = '0;31'; $this->foreground_colors['red'] = '0;31';
self::$foreground_colors['light_red'] = '1;31'; $this->foreground_colors['light_red'] = '1;31';
self::$foreground_colors['purple'] = '0;35'; $this->foreground_colors['purple'] = '0;35';
self::$foreground_colors['light_purple'] = '1;35'; $this->foreground_colors['light_purple'] = '1;35';
self::$foreground_colors['brown'] = '0;33'; $this->foreground_colors['brown'] = '0;33';
self::$foreground_colors['yellow'] = '1;33'; $this->foreground_colors['yellow'] = '1;33';
self::$foreground_colors['light_gray'] = '0;37'; $this->foreground_colors['light_gray'] = '0;37';
self::$foreground_colors['white'] = '1;37'; $this->foreground_colors['white'] = '1;37';
self::$background_colors['black'] = '40'; $this->background_colors['black'] = '40';
self::$background_colors['red'] = '41'; $this->background_colors['red'] = '41';
self::$background_colors['green'] = '42'; $this->background_colors['green'] = '42';
self::$background_colors['yellow'] = '43'; $this->background_colors['yellow'] = '43';
self::$background_colors['blue'] = '44'; $this->background_colors['blue'] = '44';
self::$background_colors['magenta'] = '45'; $this->background_colors['magenta'] = '45';
self::$background_colors['cyan'] = '46'; $this->background_colors['cyan'] = '46';
self::$background_colors['light_gray'] = '47'; $this->background_colors['light_gray'] = '47';
} }
/** /**
@ -52,18 +52,18 @@ class Colors {
* @param null $background_color * @param null $background_color
* @return string * @return string
*/ */
public static function getColoredString($string, $foreground_color = null, $background_color = null) public function printColor($string, $foreground_color = null, $background_color = null)
{ {
self::setColors(); $this->setColors();
$colored_string = ""; $colored_string = "";
if (isset(self::$foreground_colors[$foreground_color])) { if (isset($this->foreground_colors[$foreground_color])) {
$colored_string .= "\033[" . self::$foreground_colors[$foreground_color] . "m"; $colored_string .= "\033[" . $this->foreground_colors[$foreground_color] . "m";
} }
if (isset(self::$background_colors[$background_color])) { if (isset($this->background_colors[$background_color])) {
$colored_string .= "\033[" . self::$background_colors[$background_color] . "m"; $colored_string .= "\033[" . $this->background_colors[$background_color] . "m";
} }
@ -71,22 +71,4 @@ class Colors {
return $colored_string; return $colored_string;
} }
/**
* @return array
*/
public function getForegroundColors()
{
self::setColors();
return array_keys(self::$foreground_colors);
}
/**
* @return array
*/
public function getBackgroundColors()
{
self::setColors();
return array_keys(self::$background_colors);
}
} }

View file

@ -4,6 +4,7 @@ namespace Cli\Assets;
trait Console trait Console
{ {
use Colors;
/** /**
* @var false|resource * @var false|resource
@ -12,14 +13,18 @@ trait Console
/** /**
* @param string $message * @param string $message
* @param null $color
* @param string $background
*/ */
public function print(string $message, $color = null, $background = '') public function print(string $message, $color = null, $background = '')
{ {
echo Colors::getColoredString($message, $color, $background); echo $this->printColor($message, $color, $background);
} }
/** /**
* @param string $message * @param string $message
* @param null $color
* @param string $background
*/ */
public function printLn(string $message, $color = null, $background = '') public function printLn(string $message, $color = null, $background = '')
{ {
@ -35,14 +40,30 @@ trait Console
$this->printLn($message, 'green'); $this->printLn($message, 'green');
} }
/**
* @param string $message
*/
public function warning(string $message)
{
$this->printLn($message, 'brown');
}
/**
* @param string $message
*/
public function error(string $message)
{
$this->printLn($message, 'white', 'red');
}
/** /**
* @param $question * @param $question
* @return string * @return string
*/ */
public function ask($question) public function ask($question)
{ {
$this->success($question); $this->success($question );
$this->print("\n > ", 'yellow'); $this->print(" > ", 'yellow');
return $this->getLine(); return $this->getLine();
} }

View file

@ -22,13 +22,16 @@ class Commands
$this->args = $args; $this->args = $args;
} }
/**
* Handle console command
*/
public function handle() public function handle()
{ {
$name = $this->ask('What is your name? '); $name = $this->ask('What is your name? ');
$this->success('Hello ' . $name); $this->success('Succcess: Hello ' . $name);
$this->warning('Warning: Hello ' . $name);
$this->terminate(); $this->error('Error: Hello ' . $name);
} }
} }