Skip to content

[symfony 7.3] Add InvokableCommandRector - kick off#707

Merged
TomasVotruba merged 2 commits intomainfrom
tv-console-invoke
Mar 21, 2025
Merged

[symfony 7.3] Add InvokableCommandRector - kick off#707
TomasVotruba merged 2 commits intomainfrom
tv-console-invoke

Conversation

@TomasVotruba
Copy link
Copy Markdown
Member

@TomasVotruba TomasVotruba commented Mar 21, 2025

This is a kick of for Symfony __invoke console rule :) more PRs will follow.

Before

use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;

#[AsCommand(name: 'some_name')]
final class SomeCommand extends Command
{
    public function configure()
    {
        $this->addArgument('argument', InputArgument::REQUIRED, 'Argument description');
        $this->addOption('option', 'o', InputOption::VALUE_NONE, 'Option description');
    }

    public function execute(InputInterface $input, OutputInterface $output)
    {
        $someArgument = $input->getArgument('argument');
        $someOption = $input->getOption('option');

        // ...

        return 1;
    }
}

After 🎉

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Command\Argument;
use Symfony\Component\Console\Command\Option;

final class SomeCommand
{
    public function __invoke(
        #[Argument]
        string $argument,
        #[Option]
        bool $option = false,
    ) {
        $someArgument = $argument;
        $someOption = $option;

        // ...

        return 1;
    }
}

Ref symfony/symfony-docs#20553

Ref symfony/symfony#59340

@TomasVotruba TomasVotruba changed the title tv console invoke [symfony 7.3] Add InvokableCommandRector - kick off Mar 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant