[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/fact/management/ -> PhabricatorFactManagementAnalyzeWorkflow.php (source)

   1  <?php
   2  
   3  final class PhabricatorFactManagementAnalyzeWorkflow
   4    extends PhabricatorFactManagementWorkflow {
   5  
   6    public function didConstruct() {
   7      $this
   8        ->setName('analyze')
   9        ->setSynopsis(pht('Manually invoke fact analyzers.'))
  10        ->setArguments(
  11          array(
  12            array(
  13              'name'    => 'iterator',
  14              'param'   => 'name',
  15              'repeat'  => true,
  16              'help'    => 'Process only iterator __name__.',
  17            ),
  18            array(
  19              'name'    => 'all',
  20              'help'    => 'Analyze from the beginning, ignoring cursors.',
  21            ),
  22            array(
  23              'name'    => 'skip-aggregates',
  24              'help'    => 'Skip analysis of aggreate facts.',
  25            ),
  26          ));
  27    }
  28  
  29    public function execute(PhutilArgumentParser $args) {
  30      $console = PhutilConsole::getConsole();
  31  
  32      $daemon = new PhabricatorFactDaemon(array());
  33      $daemon->setVerbose(true);
  34      $daemon->setEngines(PhabricatorFactEngine::loadAllEngines());
  35  
  36      $iterators = PhabricatorFactDaemon::getAllApplicationIterators();
  37  
  38      $selected = $args->getArg('iterator');
  39      if ($selected) {
  40        $use = array();
  41        foreach ($selected as $iterator_name) {
  42          if (isset($iterators[$iterator_name])) {
  43            $use[$iterator_name] = $iterators[$iterator_name];
  44          } else {
  45            $console->writeErr(
  46              "%s\n",
  47              pht("Iterator '%s' does not exist.", $iterator_name));
  48          }
  49        }
  50        $iterators = $use;
  51      }
  52  
  53      foreach ($iterators as $iterator_name => $iterator) {
  54        if ($args->getArg('all')) {
  55          $daemon->processIterator($iterator);
  56        } else {
  57          $daemon->processIteratorWithCursor($iterator_name, $iterator);
  58        }
  59      }
  60  
  61      if (!$args->getArg('skip-aggregates')) {
  62        $daemon->processAggregates();
  63      }
  64  
  65      return 0;
  66    }
  67  
  68  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1