Completed
Push — master ( 877b15...bcf172 )
by Greg
03:52
created

SiteAliasCommands::siteList()   B

Complexity

Conditions 4
Paths 6

Size

Total Lines 24
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 24
rs 8.6845
c 0
b 0
f 0
cc 4
eloc 14
nc 6
nop 1
1
<?php
2
3
namespace Consolidation\SiteAlias\Cli;
4
5
use Consolidation\SiteAlias\SiteAliasFileLoader;
6
use Consolidation\SiteAlias\Util\YamlDataFileLoader;
7
use Consolidation\SiteAlias\SiteSpecParser;
8
9
class SiteAliasCommands extends \Robo\Tasks
10
{
11
    protected $aliasLoader;
12
13
    /**
14
     * List available site aliases.
15
     *
16
     * @command site:list
17
     * @format yaml
18
     * @return array
19
     */
20
    public function siteList(array $dirs)
21
    {
22
        $this->aliasLoader = new SiteAliasFileLoader();
23
        $ymlLoader = new YamlDataFileLoader();
24
        $this->aliasLoader->addLoader('yml', $ymlLoader);
25
26
        foreach ($dirs as $dir) {
27
            $this->io()->note("Add search location: $dir");
28
            $this->aliasLoader->addSearchLocation($dir);
29
        }
30
31
        $all = $this->aliasLoader->loadAll();
32
33
        if (empty($all)) {
34
            throw new \Exception("No aliases found");
35
        }
36
37
        $result = [];
38
        foreach ($all as $name => $alias) {
39
            $result[$name] = $alias->export();
40
        }
41
42
        return $result;
43
    }
44
45
    /**
46
     * Parse a site specification.
47
     *
48
     * @command site-spec:parse
49
     * @format yaml
50
     * @return array
51
     */
52
    public function parse($spec, $options = ['root' => ''])
53
    {
54
        $parser = new SiteSpecParser();
55
        return $parser->parse($spec, $options['root']);
56
    }
57
}
58