Ejemplo n.º 1
0
 /**
  * @test
  */
 public function formats_enums()
 {
     foreach (GitRepoHelper::$enum as $domain => $type) {
         foreach (array_keys($type) as $name) {
             $res = GitRepoHelper::formatEnum($domain, $name);
             $this->assertNotNull($res);
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $tracker = $this->getIssueTracker();
     $params = GitRepoHelper::validateEnums($input, 'issue', ['state', 'sort', 'direction']);
     foreach (['creator', 'assignee', 'mentioned', 'milestone'] as $option) {
         $params[$option] = $input->getOption($option);
     }
     if ($label = $input->getOption('label')) {
         $params['labels'] = implode(',', $label);
     }
     if ($since = $input->getOption('since')) {
         $timeStamp = strtotime($since);
         if (false === $timeStamp) {
             throw new \InvalidArgumentException($since . ' is not a valid date');
         }
         $params['since'] = date('c', $timeStamp);
     }
     $issues = $tracker->getIssues($params);
     // post filter
     foreach ($issues as $i => &$issue) {
         $isPr = $issue['pull_request'];
         $issue['_type'] = $isPr ? 'pr' : 'issue';
         if ($type = $input->getOption('type')) {
             GitRepoHelper::validateEnum('issue', 'type', $type);
             if ('pr' === $type && false === $isPr || 'issue' === $type && true === $isPr) {
                 unset($issues[$i]);
             }
         }
     }
     unset($issue);
     $styleHelper = $this->getHelper('gush_style');
     $styleHelper->title(sprintf('Issues on %s/%s', $input->getOption('issue-org'), $input->getOption('issue-project')));
     $table = $this->getHelper('table');
     $table->setHeaders(['#', 'State', 'PR?', 'Title', 'User', 'Assignee', 'Milestone', 'Labels', 'Created', 'Link']);
     $table->formatRows($issues, function ($issue) {
         return [$issue['number'], $issue['state'], $issue['_type'] === 'pr' ? 'PR' : '', $this->getHelper('text')->truncate($issue['title'], 40), $issue['user'], $issue['assignee'], $this->getHelper('text')->truncate($issue['milestone'], 15), $this->getHelper('text')->truncate(implode(',', $issue['labels']), 30), null !== $issue['created_at'] ? $issue['created_at']->format('Y-m-d H:i') : '', $issue['url']];
     });
     $table->setFooter(sprintf('<info>%s issues</info>', count($issues)));
     $table->render($output, $table);
     return self::COMMAND_SUCCESS;
 }