Page MenuHomePhorge

HarbormasterBuildGraph.php
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

HarbormasterBuildGraph.php

<?php
/**
* Directed graph representing a build plan
*/
final class HarbormasterBuildGraph extends AbstractDirectedGraph {
private $stepMap;
public static function determineDependencyExecution(
HarbormasterBuildPlan $plan) {
$steps = id(new HarbormasterBuildStepQuery())
->setViewer(PhabricatorUser::getOmnipotentUser())
->withBuildPlanPHIDs(array($plan->getPHID()))
->execute();
$steps_by_phid = mpull($steps, null, 'getPHID');
$step_phids = mpull($steps, 'getPHID');
if (count($steps) === 0) {
return array();
}
$graph = id(new HarbormasterBuildGraph($steps_by_phid))
->addNodes($step_phids);
$raw_results = $graph->getNodesInRoughTopologicalOrder();
$results = array();
foreach ($raw_results as $node) {
$results[] = array(
'node' => $steps_by_phid[$node['node']],
'depth' => $node['depth'],
'cycle' => $node['cycle'],
);
}
return $results;
}
public function __construct($step_map) {
$this->stepMap = $step_map;
}
protected function loadEdges(array $nodes) {
$map = array();
foreach ($nodes as $node) {
$step = $this->stepMap[$node];
try {
$deps = $step->getStepImplementation()->getDependencies($step);
} catch (Exception $ex) {
$deps = array();
}
$map[$node] = array();
foreach ($deps as $dep) {
$map[$node][] = $dep;
}
}
return $map;
}
}

File Metadata

Mime Type
text/x-php
Expires
Tue, May 13, 6:15 PM (2 d)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
98978
Default Alt Text
HarbormasterBuildGraph.php (1 KB)

Event Timeline