diff --git a/module/CLI/src/Command/Tag/DeleteTagsCommand.php b/module/CLI/src/Command/Tag/DeleteTagsCommand.php index 2022a9dc..a879fb4d 100644 --- a/module/CLI/src/Command/Tag/DeleteTagsCommand.php +++ b/module/CLI/src/Command/Tag/DeleteTagsCommand.php @@ -5,12 +5,12 @@ declare(strict_types=1); namespace Shlinkio\Shlink\CLI\Command\Tag; use Shlinkio\Shlink\Core\Tag\TagServiceInterface; +use Symfony\Component\Console\Attribute\AsCommand; +use Symfony\Component\Console\Attribute\Option; use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; +#[AsCommand(name: DeleteTagsCommand::NAME, description: 'Deletes one or more tags.')] class DeleteTagsCommand extends Command { public const string NAME = 'tag:delete'; @@ -20,24 +20,13 @@ class DeleteTagsCommand extends Command parent::__construct(); } - protected function configure(): void - { - $this - ->setName(self::NAME) - ->setDescription('Deletes one or more tags.') - ->addOption( - 'name', - 't', - InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, - 'The name of the tags to delete', - ); - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - $io = new SymfonyStyle($input, $output); - $tagNames = $input->getOption('name'); - + /** + * @param string[] $tags + */ + public function __invoke( + SymfonyStyle $io, + #[Option('The name of the tags to delete', name: 'name', shortcut: 't')] array $tagNames = [] + ): int { if (empty($tagNames)) { $io->warning('You have to provide at least one tag name'); return self::INVALID; @@ -45,6 +34,7 @@ class DeleteTagsCommand extends Command $this->tagService->deleteTags($tagNames); $io->success('Tags properly deleted'); + return self::SUCCESS; } }