protected static function findStrategy($name, $data, ConfigurationManager $manager, Source $parent = null) { if (isset($data['strategy'])) { return $data['strategy']; } if ($parent) { return $parent->getStrategy(); } if (isset($data['extends']) && $manager->has('source', $data['extends'])) { return $manager->get('source', $data['extends'])->getStrategy(); } throw new \LogicException("Cannot find a valid strategy for the source '{$name}'"); }
public function getSource() { $source = $this->getValueOrFail('source', 'no source specified'); $resolvedSource = $this->manager->get('source', $source); if (!$this->hasOverrides('source')) { return $resolvedSource; } return Source::make('override', $this->data['overrides']['source'], $this->manager, $resolvedSource); }
public static function create($data) { $manager = new self(); $manager->setDefaultDirectories(new Directories('default', $data['directories'], $manager)); foreach ($data['servers'] as $name => $server) { $manager->set(new Server($name, $server, $manager)); } foreach ($data['sources'] as $name => $source) { $manager->set(Source::make($name, $source, $manager)); } foreach ($data['environments'] as $name => $environment) { $manager->set(new Environment($name, $environment, $manager)); } foreach ($data['tasks'] as $name => $tasks) { $manager->set(new Tasks($name, $tasks, $manager)); } return $manager; }