setName('sharing:add-share-recipient') ->setDescription('Add a new recipient to a share.') ->addArgument('id', InputArgument::REQUIRED, 'Share ID') ->addArgument('class', InputArgument::REQUIRED, 'Recipient class') ->addArgument('value', InputArgument::REQUIRED, 'Recipient value') ->addArgument('instance', InputArgument::OPTIONAL, 'Recipient instance'); } #[\Override] public function execute(InputInterface $input, OutputInterface $output): int { /** @var string $id */ $id = $input->getArgument('id'); /** @var class-string $class */ $class = $input->getArgument('class'); /** @var non-empty-string $value */ $value = $input->getArgument('value'); /** @var ?non-empty-string $instance */ $instance = $input->getArgument('instance'); return $this->wrapExecution($output, function () use ($id, $class, $value, $instance): Share { $share = $this->manager->getShare($this->accessContext, $id); return $this->manager->addShareRecipient($this->accessContext, $share, new ShareRecipient($class, $value, $instance)); }); } }