Looking to hire Laravel developers? Try LaraJobs

laravel-artisan-command-pool maintained by ibrostudio

Description
Simplify and organize Artisan commands executed programmatically
Author
Last update
2025/12/21 05:55 (dev-main)
License
Downloads
4

Comments
comments powered by Disqus

Simplify and organize Artisan commands executed programmatically

Installation

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)

Run statically

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'])

Run from another command

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')]);
    }

Run conditionally

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

Credits

License

The MIT License (MIT). Please see License File for more information.