setAllowAbbreviatedCommands(true); // Add commands $commands->add('help', function ($args, $shell) { $shell->write("This could be usage help :)\n"); $shell->write("Exit by typing quit or pressing ^C\n"); }); // This is how you terminate the shell. Obviously, you close it :) Using end() // on the shell differs somewhat between ReactPHP; close() will exit with // code 0, while end will exit with code 1, and print a friendly message. $commands->add('quit', function ($args, $shell) { $shell->close(); }); // The command handler gets everything that was not matched. Resolve your own // commands here, or print an error. $commands->on('command', function ($command, $args, $shell) { $shell->write("Bad command '{$command}', try help.\n"); $shell->write("Arguments passed: ".json_encode($args)."\n"); }); // The prompt event is invoked before every full redraw. Call redrawPrompt() // to trigger it manually. Set the prompt or the style here. $shell->on('prompt', function ($shell) { $shell->setPrompt(">> "); }); // This is where we hook the CommandHandler to the shell. $shell->on('input', $commands); // And finally, the end event gives you a chance to shut down cleanly. After // returning from here, the shell will exit. $shell->on('end', function ($shell) { $shell->write("Shutting down...\n"); });