Skip to content

iBroStudio/laravel-artisan-command-pool

Repository files navigation

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.

About

Simplify and organize Artisan commands executed programmatically

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages