Gush\Command\Issue\IssueCopyCommand::execute PHP Метод

execute() защищенный Метод

protected execute ( Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output )
$input Symfony\Component\Console\Input\InputInterface
$output Symfony\Component\Console\Output\OutputInterface
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $issueNumber = $input->getArgument('issue_number');
        $targetUsername = $input->getArgument('target_username');
        $targetRepository = $input->getArgument('target_repository');
        $prefix = $input->getOption('prefix') ?: '';
        $close = $input->getOption('close');
        $adapter = $this->getIssueTracker();
        if ($input->getOption('target-adapter') !== null && $input->getOption('target-adapter') !== $input->getOption('issue-adapter')) {
            $destAdapter = $this->buildIssueAdapter($input->getOption('target-adapter'));
        } else {
            $destAdapter = clone $adapter;
        }
        $srcIssue = $adapter->getIssue($issueNumber);
        $srcTitle = $prefix . $srcIssue['title'];
        $srcUsername = $adapter->getUsername();
        $srcRepository = $adapter->getRepository();
        $destAdapter->setUsername($targetUsername);
        $destAdapter->setRepository($targetRepository);
        $destIssueNumber = $destAdapter->openIssue($srcTitle, $srcIssue['body'], $srcIssue);
        $issueUrl = $destAdapter->getIssueUrl($destIssueNumber);
        $this->getHelper('gush_style')->success(sprintf('Opened issue: %s', $issueUrl));
        if (true === $input->getOption('with-comments')) {
            $comments = $adapter->getComments($issueNumber);
            uasort($comments, function ($a, $b) {
                if ($a['created_at'] == $b['created_at']) {
                    return 0;
                }
                return $a['created_at'] < $b['created_at'] ? -1 : 1;
            });
            $messages = [];
            foreach ($comments as $comment) {
                $commentUrl = $destAdapter->createComment($destIssueNumber, sprintf("%s\n\nby **%s** on **%s**", $comment['body'], $comment['user']['login'], $comment['created_at']->format('r')));
                $messages[] = sprintf('Comment added: %s', is_array($commentUrl) ? implode(',', $commentUrl) : $commentUrl);
            }
            $this->getHelper('gush_style')->listing($messages);
        }
        $adapter->setUsername($srcUsername);
        $adapter->setRepository($srcRepository);
        if (true === $close) {
            if ('closed' === $srcIssue['state']) {
                $this->getHelper('gush_style')->error(sprintf('Issue #%d was already closed.', $issueNumber));
            } else {
                $adapter->closeIssue($issueNumber);
                $this->getHelper('gush_style')->success(sprintf('Closed issue: %s', $adapter->getIssueUrl($issueNumber)));
            }
        }
        return self::COMMAND_SUCCESS;
    }