Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / consolidation / site-alias / src / Cli / SiteAliasCommands.php
diff --git a/vendor/consolidation/site-alias/src/Cli/SiteAliasCommands.php b/vendor/consolidation/site-alias/src/Cli/SiteAliasCommands.php
new file mode 100644 (file)
index 0000000..3a30586
--- /dev/null
@@ -0,0 +1,145 @@
+<?php
+
+namespace Consolidation\SiteAlias\Cli;
+
+use Consolidation\SiteAlias\SiteAliasFileLoader;
+use Consolidation\SiteAlias\SiteAliasManager;
+use Consolidation\SiteAlias\Util\YamlDataFileLoader;
+use Consolidation\SiteAlias\SiteSpecParser;
+use Consolidation\SiteAlias\SiteAliasName;
+
+class SiteAliasCommands extends \Robo\Tasks
+{
+    protected $aliasLoader;
+
+    /**
+     * List available site aliases.
+     *
+     * @command site:list
+     * @format yaml
+     * @return array
+     */
+    public function siteList(array $varArgs)
+    {
+        $this->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']);
+    }
+}