You can install the package via composer:
composer require ibrostudio/laravel-artisan-command-pool
Each command in the pool has to return a Illuminate\Console\Command int state (Command::SUCCESS or Command::FAILURE)
use IBroStudio\CommandPool\CommandPool;
CommandPool::pool([
Command1::class,
Command2::class,
])->run()
With command arguments (passed to each command in pool):
use IBroStudio\CommandPool\CommandPool;
CommandPool::pool([
Command1::class,
Command2::class,
])->runWith(['name' => 'Name'])
With different arguments for each command in pool:
use IBroStudio\CommandPool\CommandPool;
CommandPool::pool([
Command1::class => ['name' => 'Name'],
Command2::class => ['title' => 'Title'],
])->run()
or
use IBroStudio\CommandPool\CommandPool;
CommandPool::pool([
Command1::class,
Command2::class => ['title' => 'Title'],
])->runWith(['name' => 'Name'])
use IBroStudio\CommandPool\Concerns\HasCommandPool;
class MyContractorCommand extends Command
{
use HasCommandPool;
public function handle(): int
{
return $this->commandPool([
Command1::class,
Command2::class,
])->run();
//or
return $this->commandPool([
Command1::class,
Command2::class => ['title' => 'tata'],
])->runWith(['name' => $this->argument('name')]);
}
Add a runIf
key with a closure returning a boolean:
use IBroStudio\CommandPool\CommandPool;
CommandPool::pool([
Command1::class => ['runIf' => fn (): bool => false],
Command2::class,
])->run() // will run only Command2
The MIT License (MIT). Please see License File for more information.