2017 © Pedro Peláez
 

library simple-console

One file console framework to help you write build scripts.

image

asika/simple-console

One file console framework to help you write build scripts.

  • Thursday, March 8, 2018
  • by asika32764
  • Repository
  • 1 Watchers
  • 14 Stars
  • 8,322 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 2 Open issues
  • 5 Versions
  • 177 % Grown

The README.md

PHP Simple Console

Single file console framework to help you write build scripts., (*1)

Installation

Use composer:, (*2)

``` bash composer require asika/simple-console, (*3)


Or downlaod single file to use: [Download Here](https://raw.githubusercontent.com/asika32764/php-simple-console/master/src/Console.php) ## Getting Started Use closure ``` php #!/bin/sh php <?php // Include single file include_once __DIR__ . '/Console.php'; // Or use composer include_once __DIR__ . '/vendor/autolod.php'; $app = new \Asika\SimpleConsole\Console; // Use closure $app->execute(function (\Asika\SimpleConsole\Console $app) { // PHP 5.3 $app->out('Hello'); // PHP 5.4 or higher use $this $this->out('Hello'); // Return TRUE will auto convert to 0 exitcode. return true; });

Or Create your own class., (*4)

``` php class Build extends \Asika\SimpleConsole\Console { protected $help = <<, (*5)

[Options] h | help Show help information v Show more debug information. HELP;, (*6)

protected function doExecute ()
{
    $this->out('Hello');

    // Return TRUE will auto convert to 0 exitcode.
    return true;
}

}, (*7)

$app = new Build; $app->execute();, (*8)


## Show HELP Add `-h` or `--help` to show usage, you can add custom usage to `$this->help`, or override `$this->getHelp()`. If you want to change `h` and `help` option, override `$this->helpOptions = array('...')`. ## Handle Error Just throw Exception in `doExecute()`, Console will auto catch error. ``` php throw new \RuntimeException('...');

Add -v to show backtrace if error., (*9)

Handle Wrong Arguments

Wrong Argument use \Asika\SimpleConsole\CommandArgsException, (*10)

``` php $arg = $this->getArgument(0);, (*11)

if (!$arg) { throw new \Asika\SimpleConsole\CommandArgsException('Please enter a name.'); }, (*12)


Console will auto show help information. ``` bash [Warning] Please enter a name. [Usage] console.php <name> [Options] h | help Show help info. v Show more debug information.

Multiple Commands

Use delegate() to delegate to different methods., (*13)

``` php //..., (*14)

protected function doExecute()
{
    return $this->delegate($this->getArgument(0));
}

protected function foo()
{
    $this->getArgument(1); // bar
}

protected function baz()
{
    // ...
}

Now you can add sub commands ``` bash php console.php foo bar php console.php baz

If you want to strip first argument after delgated, you can follow this code:, (*15)

``` php $this->delegate(array_shift($this->args));, (*16)


Now can use `getArgument(0)` in sub method and ignore the first command name. The is another way: ``` php $command = array_shift($this->args); $this->delegate($command, ...$this->args);

``` php protected function foo($first, $second = null) { }, (*17)


## API ### `getArgument($order[, $default = null])` ``` php $first = $this->getArgument(0, 'default value');

setArgument($order, $$value)

``` php $this->setArgument(1, 'value');, (*18)


### `getOption($name: array|string[, $default = null])` Get option `--foo` ``` php $this->getOption('foo');

Get option -f or --foo, first match will return., (*19)

``` php $this->getOption(array('f', 'foo'));, (*20)


> NOTE: > `-abc` will convert to `a => 1, b => 1, c => 1` > And `-vvv` will convert to `v => 3` ### `setOption($name, $value)` Set otpion to toption list. `$name` also support array. ### `out($string[, $newline: bool = false])` Write to STDOUT, ``` bash $this->out('Hello')->out('World');

err($string[, $newline: bool = false])

Write to STDERR, (*21)

``` bash $this->err('Hello')->err('World');, (*22)


### `in($string[$default = null, $bool = false)` Ask a question, read from STDIN ``` bash $un = $this->in('Please enter username: ', 'default_name');

Read as boolean, add true to third argument:, (*23)

bash $bool = $this->in('Are you sure? [Y/n]', [default true/false], true);, (*24)

  • yes, y, 1, true will convert to TRUE
  • no, n, 0, false will convert to FALSE

exec($cmd)

A proxy to execute a cmd by exec() and return value., (*25)

It will add a title >> {your command} before exec so you will know what has been executed., (*26)

The Versions

08/03 2018

dev-master

9999999-dev

One file console framework to help you write build scripts.

  Sources   Download

MIT

by Simon Asika

08/03 2018

1.0.3

1.0.3.0

One file console framework to help you write build scripts.

  Sources   Download

MIT

by Simon Asika

17/08 2017

1.0.2

1.0.2.0

One file console framework to help you write build scripts.

  Sources   Download

MIT

by Simon Asika

04/03 2017

1.0.1

1.0.1.0

One file console framework to help you write build scripts.

  Sources   Download

MIT

by Simon Asika

04/03 2017

1.0.0

1.0.0.0

One file console framework to help you write build scripts.

  Sources   Download

MIT

by Simon Asika