BaseTask   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 107
Duplicated Lines 0 %

Coupling/Cohesion

Components 3
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 9
c 3
b 0
f 0
lcom 3
cbo 4
dl 0
loc 107
ccs 21
cts 21
cp 1
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A packageManager() 0 6 1
A package() 0 6 1
A verbose() 0 6 1
A __construct() 0 14 4
A packages() 0 8 2
1
<?php
2
/**
3
 * This file is part of RoboSystemPackage.
4
 *
5
 * @author      Aitor García Martínez (Falc) <[email protected]>
6
 * @copyright   2015 Aitor García Martínez (Falc) <[email protected]>
7
 * @license     MIT
8
 */
9
10
namespace Falc\Robo\Package;
11
12
use Falc\Robo\Package\Factory\CommandBuilderFactory;
13
use Falc\Robo\Package\Factory\CommandBuilderFactoryInterface;
14
use Robo\Common\ExecOneCommand;
15
use Robo\Task\BaseTask as RoboBaseTask;
16
17
/**
18
 * Base class for all package tasks.
19
 */
20
abstract class BaseTask extends RoboBaseTask
21
{
22
    use ExecOneCommand;
23
24
    /**
25
     * Package list.
26
     *
27
     * @var string[]
28
     */
29
    protected $packages;
30
31
    /**
32
     * Whether verbose mode is enabled or not.
33
     *
34
     * @var boolean
35
     */
36
    protected $verbose = false;
37
38
    /**
39
     * CommandBuilder factory.
40
     *
41
     * @var CommandBuilderFactoryInterface
42
     */
43
    protected $factory;
44
45
    /**
46
     * CommandBuilder.
47
     *
48
     * @var \Falc\Robo\Package\CommandBuilder\CommandBuilderInterface
49
     */
50
    protected $builder;
51
52
    /**
53
     * Constructor.
54
     *
55
     * @param   string                          $packageManager Package manager to use. Optional.
56
     * @param   string[]                        $packages       Package list. Optional.
57
     * @param   CommandBuilderFactoryInterface  $factory        CommandBuilder factory. Optional.
58
     */
59 24
    public function __construct($packageManager = null, array $packages = [], CommandBuilderFactoryInterface $factory = null)
60
    {
61 24
        $this->factory = $factory ?: new CommandBuilderFactory();
62
63 24
        if ($packageManager !== null) {
64 3
            $this->packageManager($packageManager);
65
        }
66
67 24
        $this->packages = [];
68
69 24
        if (!empty($packages)) {
70 3
            $this->packages($packages);
71
        }
72 24
    }
73
74
    /**
75
     * Sets the package manager to use.
76
     *
77
     * @param   string  $packageManager Package manager to use.
78
     * @return  BaseTask
79
     */
80 21
    public function packageManager($packageManager)
81
    {
82 21
        $this->builder = $this->factory->create(strtolower($packageManager));
83
84 21
        return $this;
85
    }
86
87
    /**
88
     * Adds a package to the package list.
89
     *
90
     * @param   string  $package    Package.
91
     * @return  BaseTask
92
     */
93 12
    public function package($package)
94
    {
95 12
        $this->packages[] = trim($package);
96
97 12
        return $this;
98
    }
99
100
    /**
101
     * Adds packages to the package list.
102
     *
103
     * @param   string[]    $packages   List of packages.
104
     * @return  BaseTask
105
     */
106 6
    public function packages(array $packages)
107
    {
108 6
        foreach ($packages as $package) {
109 6
            $this->package($package);
110
        }
111
112 6
        return $this;
113
    }
114
115
    /**
116
     * Enables the verbose mode.
117
     *
118
     * @return BaseTask
119
     */
120 3
    public function verbose()
121
    {
122 3
        $this->verbose = true;
123
124 3
        return $this;
125
    }
126
}
127