fieg/shell

Interactive shell (cli) component for PHP

1.0 2015-05-17 19:52 UTC

This package is auto-updated.

Last update: 2024-10-29 04:36:27 UTC


README

Interactive shell (cli) component for PHP

Build Status

Getting started

use Fieg\Shell\Shell;
use Fieg\Shell\ShellEvents;

$shell = new Shell();

// handle some commands
$shell->on(ShellEvents::COMMAND, function ($command) use ($shell) {
    switch ($command) {
        case "help":
            $shell->publish('Available commands:');
            $shell->publish('  help   Print this help');
            $shell->publish('  exit   Exit program');
            break;

        case "exit":
            $shell->stop();
            break;

        // echo everything else the user types
        default:
            $shell->publish('echo: ' . $command);
    }
});

// print some info
$shell->publish("This is an interactive shell.");
$shell->publish("Type 'help' for all available commands.");

// start a prompt so we can receive user input
$shell->prompt();

// statements after this are only executed when `$shell->stop()` is called
$shell->run();

echo "Bye!" . PHP_EOL;

This library also comes with a history support. With this you can use the up and down arrows to browse through the recently typed commands. To enable the history support, just wrap the Shell class in a HistoryDecorator:

$shell = new HistoryDecorator(new Shell());

You can also type the command "history" to see a list of all recently typed commands.