/** * @return TaskStack */ public function getStackForTask($name) { if (!$this->has($name)) { throw new TaskNotFoundException($name); } $stack = new TaskStack(); $task = $this->tasks[$name]; foreach ($task->getDependencies() as $dep) { $stack->merge($this->getStackForTask($dep), true); } $stack->push($task); return $stack; }