Path: blob/master/src/applications/fact/management/PhabricatorFactManagementAnalyzeWorkflow.php
12256 views
<?php12final class PhabricatorFactManagementAnalyzeWorkflow3extends PhabricatorFactManagementWorkflow {45protected function didConstruct() {6$this7->setName('analyze')8->setSynopsis(pht('Manually invoke fact analyzers.'))9->setArguments(10array(11array(12'name' => 'iterator',13'param' => 'name',14'repeat' => true,15'help' => pht('Process only iterator __name__.'),16),17array(18'name' => 'all',19'help' => pht('Analyze from the beginning, ignoring cursors.'),20),21array(22'name' => 'skip-aggregates',23'help' => pht('Skip analysis of aggregate facts.'),24),25));26}2728public function execute(PhutilArgumentParser $args) {29$console = PhutilConsole::getConsole();3031$daemon = new PhabricatorFactDaemon(array());32$daemon->setVerbose(true);33$daemon->setEngines(PhabricatorFactEngine::loadAllEngines());3435$iterators = PhabricatorFactDaemon::getAllApplicationIterators();3637$selected = $args->getArg('iterator');38if ($selected) {39$use = array();40foreach ($selected as $iterator_name) {41if (isset($iterators[$iterator_name])) {42$use[$iterator_name] = $iterators[$iterator_name];43} else {44$console->writeErr(45"%s\n",46pht("Iterator '%s' does not exist.", $iterator_name));47}48}49$iterators = $use;50}5152foreach ($iterators as $iterator_name => $iterator) {53if ($args->getArg('all')) {54$daemon->processIterator($iterator);55} else {56$daemon->processIteratorWithCursor($iterator_name, $iterator);57}58}5960return 0;61}6263}646566