mpyw / streamable-console
Call interactive artisan command using arbitrary stream
v1.2.0
2025-03-05 07:45 UTC
Requires
- php: ^8.2
- guzzlehttp/psr7: ^2.7
- illuminate/console: ^11.0 || ^12.0 || ^13.0
- illuminate/contracts: ^11.0 || ^12.0 || ^13.0
Requires (Dev)
- mockery/mockery: ^1.6.12
- orchestra/testbench: *
- orchestra/testbench-core: >=9.0
- phpunit/phpunit: >=11.0
This package is auto-updated.
Last update: 2025-03-05 07:58:06 UTC
README
Call interactive artisan command using arbitrary stream.
Requirements
- PHP:
^8.2
- Laravel:
^11.0 || ^12.0
- guzzlehttp/psr7:
^2.7
Note
Older versions have outdated dependency requirements. If you cannot prepare the latest environment, please refer to past releases.
Installing
composer require mpyw/streamable-console
Usage
Using Stream
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class QuizCommand extends Command { protected $signature = 'example:quiz'; /** * @return int */ public function handle(): int { // We need to type "no" and press Enter to pass if ($this->confirm('Is one plus one equals to three?', true)) { return 1; } return 0; } }
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Mpyw\StreamableConsole\Streamable; class RunCommand extends Command { use Streamable; protected $signature = 'example:run'; /** * @return int */ public function handle(): int { // Type "no" and press Enter return $this->usingInputStream("no\n")->call('example:quiz'); } }
Using Infinite Input (yes
command emulation)
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class QuizCommand extends Command { protected $signature = 'example:quiz'; /** * @return int */ public function handle(): int { // We need to type "no" and press Enter to pass at least for three times if ($this->confirm('Is one plus one equals to three?', true)) { return 1; } if ($this->confirm('Is one plus one equals to three?', true)) { return 1; } if ($this->confirm('Is one plus one equals to three?', true)) { return 1; } return 0; } }
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Mpyw\StreamableConsole\Streamable; class RunCommand extends Command { use Streamable; protected $signature = 'example:run'; /** * @return int */ public function handle(): int { // Infinitely type "no" and press Enter return $this->usingInfiniteInput("no\n")->call('example:quiz'); } }
Note that you can use yes()
as an alias of usingInfiniteInput()
.