<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..." // ] // ]