aliasLoader = new SiteAliasFileLoader(); $ymlLoader = new YamlDataFileLoader(); $this->aliasLoader->addLoader('yml', $ymlLoader); $aliasName = $this->getLocationsAndAliasName($varArgs, $this->aliasLoader); $this->manager = new SiteAliasManager($this->aliasLoader); return $this->renderAliases($this->manager->getMultiple($aliasName)); } /** * Load available site aliases. * * @command site:load * @format yaml * @return array */ public function siteLoad(array $dirs) { $this->aliasLoader = new SiteAliasFileLoader(); $ymlLoader = new YamlDataFileLoader(); $this->aliasLoader->addLoader('yml', $ymlLoader); foreach ($dirs as $dir) { $this->io()->note("Add search location: $dir"); $this->aliasLoader->addSearchLocation($dir); } $all = $this->aliasLoader->loadAll(); return $this->renderAliases($all); } protected function getLocationsAndAliasName($varArgs) { $aliasName = ''; foreach ($varArgs as $arg) { if (SiteAliasName::isAliasName($arg)) { $this->io()->note("Alias parameter: '$arg'"); $aliasName = $arg; } else { $this->io()->note("Add search location: $arg"); $this->aliasLoader->addSearchLocation($arg); } } return $aliasName; } protected function renderAliases($all) { if (empty($all)) { throw new \Exception("No aliases found"); } $result = []; foreach ($all as $name => $alias) { $result[$name] = $alias->export(); } return $result; } /** * Show contents of a single site alias. * * @command site:get * @format yaml * @return array */ public function siteGet(array $varArgs) { $this->aliasLoader = new SiteAliasFileLoader(); $ymlLoader = new YamlDataFileLoader(); $this->aliasLoader->addLoader('yml', $ymlLoader); $aliasName = $this->getLocationsAndAliasName($varArgs, $this->aliasLoader); $manager = new SiteAliasManager($this->aliasLoader); $result = $manager->get($aliasName); if (!$result) { throw new \Exception("No alias found"); } return $result->export(); } /** * Access a value from a single alias. * * @command site:value * @format yaml * @return string */ public function siteValue(array $varArgs) { $this->aliasLoader = new SiteAliasFileLoader(); $ymlLoader = new YamlDataFileLoader(); $this->aliasLoader->addLoader('yml', $ymlLoader); $key = array_pop($varArgs); $aliasName = $this->getLocationsAndAliasName($varArgs, $this->aliasLoader); $manager = new SiteAliasManager($this->aliasLoader); $result = $manager->get($aliasName); if (!$result) { throw new \Exception("No alias found"); } return $result->get($key); } /** * Parse a site specification. * * @command site-spec:parse * @format yaml * @return array */ public function parse($spec, $options = ['root' => '']) { $parser = new SiteSpecParser(); return $parser->parse($spec, $options['root']); } }