/**
  * {@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;
 }
Exemple #2
0
 private function renderPat(array $placeHolders, $pat)
 {
     $resultString = Pats::get($pat);
     foreach ($placeHolders as $placeholder => $value) {
         $resultString = str_replace('{{ ' . $placeholder . ' }}', $value, $resultString);
     }
     return $resultString;
 }
 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);
     }
 }