Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/fact/management/PhabricatorFactManagementAnalyzeWorkflow.php
12256 views
1
<?php
2
3
final class PhabricatorFactManagementAnalyzeWorkflow
4
extends PhabricatorFactManagementWorkflow {
5
6
protected 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' => pht('Process only iterator __name__.'),
17
),
18
array(
19
'name' => 'all',
20
'help' => pht('Analyze from the beginning, ignoring cursors.'),
21
),
22
array(
23
'name' => 'skip-aggregates',
24
'help' => pht('Skip analysis of aggregate 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
return 0;
62
}
63
64
}
65
66