/** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $prNumber = $input->getArgument('pr_number'); $adapter = $this->getAdapter(); $pr = $adapter->getPullRequest($prNumber); if ($pr['user'] === $this->getParameter($input, 'authentication')['username']) { throw new UserException('You cannot pat yourself.'); } $config = $this->getConfig(); if ($customPats = $config->get('pats')) { Pats::addPats($customPats); } $pats = Pats::getPats(); if ($pat = $input->getOption('pat')) { if ('random' === $pat) { $pat = Pats::getRandomPatName(); } } else { $pat = $this->choosePat($pats); } $patMessage = $this->getHelper('template')->bindAndRender(['pat' => $pat, 'author' => $pr['user']], 'pats', 'general'); $adapter->createComment($prNumber, $patMessage); $url = $adapter->getPullRequest($prNumber)['url']; $this->getHelper('gush_style')->success("Pat on the back pushed to {$url}"); return self::COMMAND_SUCCESS; }
private function givePatToPullRequestAuthor(array $pr, $pat) { $config = $this->getConfig(); $configuredPat = $config->get('pat_on_merge'); if (in_array('none', [$pat, $configuredPat], true)) { return; } if ($pats = $this->getConfig()->get('pats')) { Pats::addPats($pats); } if ($pat) { if ('random' === $pat) { $pat = Pats::getRandomPatName(); } } elseif ($configuredPat) { $pat = $configuredPat; if ('random' === $pat) { $pat = Pats::getRandomPatName(); } } else { $pats = ['none' => '(!) This option wil omit the pat to the PR\'s author'] + Pats::getPats(); $pat = $this->getHelper('gush_style')->choice('Please, choose a pat ', $pats, reset($pats)); } if ('none' !== $pat) { $patMessage = $this->getHelper('template')->bindAndRender(['pat' => $pat, 'author' => $pr['user']], 'pats', 'general'); return $this->getAdapter()->createComment($pr['number'], $patMessage); } }