diff --git a/src/applications/harbormaster/controller/HarbormasterPlanViewController.php b/src/applications/harbormaster/controller/HarbormasterPlanViewController.php --- a/src/applications/harbormaster/controller/HarbormasterPlanViewController.php +++ b/src/applications/harbormaster/controller/HarbormasterPlanViewController.php @@ -129,13 +129,24 @@ continue; } - $item->addAttribute($implementation->getDescription()); - $item->setHref($view_uri); - - $depends = $step->getStepImplementation()->getDependencies($step); + try { + $depends = $step->getStepImplementation()->getDependencies($step); + } catch (Exception $ex) { + // We can't calculate dependencies if another plan is missing + // an implementation. Handle this scenario gracefully. + $item + ->setStatusIcon('fa-warning red') + ->addAttribute(pht( + 'Unable to calculate dependencies for this build step. '. + 'Are other build steps invalid?')); + continue; + } $inputs = $step->getStepImplementation()->getArtifactInputs(); $outputs = $step->getStepImplementation()->getArtifactOutputs(); + $item->addAttribute($implementation->getDescription()); + $item->setHref($view_uri); + $has_conflicts = false; if ($depends || $inputs || $outputs) { $available_artifacts =