Completed
Push — master ( 6f6a8a...c98c64 )
by Greg
14:01
created

SiteAliasCommands::siteGet()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

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