<p align="center">
<img src="https://i17.servimg.com/u/f17/11/13/61/32/clike10.png" width="270">
</p>
<p align="center">
<a href="https://scrutinizer-ci.com/g/degraciamathieu/clike/?branch=master"><img src="https://scrutinizer-ci.com/g/DeGraciaMathieu/Clike/badges/quality-score.png?b=master" alt="Scrutinizer Code Quality"></a>
<a href="https://travis-ci.org/DeGraciaMathieu/Clike"><img src="https://travis-ci.org/DeGraciaMathieu/Clike.svg?branch=master" alt="Build Status"></a>
<a href="https://scrutinizer-ci.com/g/DeGraciaMathieu/Clike/?branch=master"><img src="https://scrutinizer-ci.com/g/DeGraciaMathieu/Clike/badges/coverage.png?b=master" alt="Code Coverage"></a>
<img src="https://img.shields.io/travis/php-v/DeGraciaMathieu/Clike.svg" alt="PHP range">
<a href="https://packagist.org/packages/degraciamathieu/clike"><img src="https://img.shields.io/packagist/v/degraciamathieu/clike.svg?style=flat-square" alt="Latest Version on Packagist"></a>
<a href='https://packagist.org/packages/degraciamathieu/clike'><img src='https://img.shields.io/packagist/dt/degraciamathieu/clike.svg?style=flat-square' /></a>
</p>
DeGraciaMathieu/Clike
Installation
Run in console below command to download package to your project:
composer require degraciamathieu/clike
Usage
Create a command
A command is a class that must implement the interface `
DeGraciaMathieu\Clike\Contracts\Command::class`
.
The following example is a valid command.
use DeGraciaMathieu\Clike\Lines;
use DeGraciaMathieu\Clike\Contracts;
class Clear implements Contracts\Command {
/
* Get the command description
*/
public function description() :string
{
return 'Command description...';
}
/
* Check if the command is executable
*/
public function authorized() :bool
{
return true;
}
/
* Bind of this command
*/
public function binding() :string
{
return '/clear';
}
/
* Code executed by this command
*/
public function process() :void
{
//
}
/
* Output of this command
*/
public function output() :array
{
return [
new Lines\Info('Output text...'),
];
}
}
Execute a command
Now let's play with our Clear command.
use DeGraciaMathieu\Clike\Command;
$command = new Command();
$command->execute(new Clear());
After checking that we can use this command with the `
authorized`
method this code will execute the `
process`
method of our command.
To finally execute the `
output`
method displaying the following result.
// array:2 [
// "timestamp" => 1531339693
// "lines" => array:1 [
// 0 => array:2 [
// "type" => "info"
// "content" => "Output text..."
// ]
// ]
// ]
Execute a command with Terminal
use DeGraciaMathieu\Clike\Terminal;
$terminal = new Terminal([
Clear::class,
]);
$terminal->execute('/clear');
Retrieve all available commands with Terminal
use DeGraciaMathieu\Clike\Terminal;
$terminal = new Terminal([
Clear::class,
]);
$terminal->getAvailableCommands();
// [
// [
// "binding" => "/clear"
// "description" => "Command description..."
// ]
// ]