[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * Directed graph representing a build plan 5 */ 6 final class HarbormasterBuildGraph extends AbstractDirectedGraph { 7 8 private $stepMap; 9 10 public static function determineDependencyExecution( 11 HarbormasterBuildPlan $plan) { 12 13 $steps = id(new HarbormasterBuildStepQuery()) 14 ->setViewer(PhabricatorUser::getOmnipotentUser()) 15 ->withBuildPlanPHIDs(array($plan->getPHID())) 16 ->execute(); 17 18 $steps_by_phid = mpull($steps, null, 'getPHID'); 19 $step_phids = mpull($steps, 'getPHID'); 20 21 if (count($steps) === 0) { 22 return array(); 23 } 24 25 $graph = id(new HarbormasterBuildGraph($steps_by_phid)) 26 ->addNodes($step_phids); 27 28 $raw_results = 29 $graph->getBestEffortTopographicallySortedNodes(); 30 31 $results = array(); 32 foreach ($raw_results as $node) { 33 $results[] = array( 34 'node' => $steps_by_phid[$node['node']], 35 'depth' => $node['depth'], 36 'cycle' => $node['cycle'], 37 ); 38 } 39 40 return $results; 41 } 42 43 public function __construct($step_map) { 44 $this->stepMap = $step_map; 45 } 46 47 protected function loadEdges(array $nodes) { 48 $map = array(); 49 foreach ($nodes as $node) { 50 $step = $this->stepMap[$node]; 51 $deps = $step->getStepImplementation()->getDependencies($step); 52 53 $map[$node] = array(); 54 foreach ($deps as $dep) { 55 $map[$node][] = $dep; 56 } 57 } 58 59 return $map; 60 } 61 62 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |