One file console framework to help you write build scripts.

1.0.3 2018-03-08 12:05 UTC

This package is auto-updated.

Last update: 2021-10-29 02:20:25 UTC


Single file console framework to help you write build scripts.


Use composer:

composer require asika/simple-console

Or downlaod single file to use: Download Here

Getting Started

Use closure

#!/bin/sh 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

    // PHP 5.4 or higher use $this

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

Or Create your own class.

class Build extends \Asika\SimpleConsole\Console
    protected $help = <<<HELP
[Usage] php build.php <version>

    h | help   Show help information
    v          Show more debug information.

    protected function doExecute ()

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

$app = new Build;


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.

throw new \RuntimeException('...');

Add -v to show backtrace if error.

Handle Wrong Arguments

Wrong Argument use \Asika\SimpleConsole\CommandArgsException

$arg = $this->getArgument(0);

if (!$arg)
    throw new \Asika\SimpleConsole\CommandArgsException('Please enter a name.');

Console will auto show help information.

[Warning] Please enter a name.

[Usage] console.php <name>

    h | help   Show help info.
    v          Show more debug information.

Multiple Commands

Use delegate() to delegate to different methods.


    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

php console.php foo bar
php console.php baz

If you want to strip first argument after delgated, you can follow this code:


Now can use getArgument(0) in sub method and ignore the first command name.

The is another way:

$command = array_shift($this->args);

$this->delegate($command, ...$this->args);
protected function foo($first, $second = null)


getArgument($order[, $default = null])

$first = $this->getArgument(0, 'default value');

setArgument($order, $$value)

$this->setArgument(1, 'value');

getOption($name: array|string[, $default = null])

Get option --foo


Get option -f or --foo, first match will return.

$this->getOption(array('f', 'foo'));

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,


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

Write to STDERR


in($string[$default = null, $bool = false)

Ask a question, read from STDIN

$un = $this->in('Please enter username: ', 'default_name');

Read as boolean, add true to third argument:

$bool = $this->in('Are you sure? [Y/n]', [default true/false], true);
  • yes, y, 1, true will convert to TRUE
  • no, n, 0, false will convert to FALSE


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

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