Defining Arguments

Arguments

To add arguments to your command you can use the Argument attribute.

use Illuminate\Console\Command;
use WendellAdriel\Virtue\Commands\Attributes\Argument;
use WendellAdriel\Virtue\Commands\Concerns\Virtue;

#[Argument(name: 'optional', required: false, description: 'Optional parameter')]
#[Argument(name: 'required')]
final class TestCommand extends Command
{
    use Virtue;

    protected $name = 'app:test';

    protected $description = 'Command description';

    public function handle()
    {
        // Command code here
    }
}

These are the available properties to define your optional arguments:

public function __construct(
        public string $name,
        public bool $required = true,
        public bool $array = false,
        public string $description = '',
        public string|int|bool|array|float|null $default = null,
        public array|Closure $suggestedValues = [],
    ) {
        //
    }

Optional Arguments

To add optional arguments to your command, you can also use the OptionalArgument attribute.

use Illuminate\Console\Command;
use WendellAdriel\Virtue\Commands\Attributes\OptionalArgument;
use WendellAdriel\Virtue\Commands\Concerns\Virtue;

#[OptionalArgument(name: 'age', default: 18)]
final class TestCommand extends Command
{
    use Virtue;

    protected $name = 'app:test';

    protected $description = 'Command description';

    public function handle()
    {
        // Command code here
    }
}

These are the available properties to define your optional arguments:

public function __construct(
        public string $name,
        public bool $array = false,
        public string $description = '',
        public string|int|bool|array|float|null $default = null,
        public array|Closure $suggestedValues = [],
    ) {
        //
    }

Required Arguments

To add required arguments to your command, you can also use the RequiredArgument attribute.

use Illuminate\Console\Command;
use WendellAdriel\Virtue\Commands\Attributes\RequiredArgument;
use WendellAdriel\Virtue\Commands\Concerns\Virtue;

#[RequiredArgument(name: 'name')]
final class TestCommand extends Command
{
    use Virtue;

    protected $name = 'app:test';

    protected $description = 'Command description';

    public function handle()
    {
        // Command code here
    }
}

These are the available properties to define your required arguments:

public function __construct(
        public string $name,
        public bool $array = false,
        public string $description = '',
        public array|Closure $suggestedValues = [],
    ) {
        //
    }

Last updated