Test Setup Failed
Push — master ( b5b0f1...43ee18 )
by Josh
03:26
created

Blend::configureWithConsole()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 28
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 22
dl 0
loc 28
rs 9.568
c 0
b 0
f 0
cc 3
nc 3
nop 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: joshgulledge
5
 * Date: 2/15/18
6
 * Time: 3:23 PM
7
 */
8
9
namespace LCI\Blend\Console;
10
11
use Symfony\Component\Console\Input\InputInterface;
12
use Symfony\Component\Console\Output\OutputInterface;
13
14
use Symfony\Component\Console\Input\InputArgument;
15
16
class Blend extends BaseCommand
17
{
18
    protected $exe_type = 'install';
19
20
    /**
21
     * @see https://symfony.com/doc/current/console.html
22
     * namespace:project/extra(-sub-part) verb (GET/POST/DELETE) --options
23
     */
24
    protected function configureWithConsole()
25
    {
26
        $activePackageCommands = new ActivePackageCommands($this->console);
27
        if ($activePackageCommands->isBlendInstalled()) {
28
            if ($activePackageCommands->isBlendRequireUpdate()) {
29
                $this->exe_type = 'update';
30
                $this
31
                    ->setName('blend:update')
32
                    ->setDescription('An update to Blend is required')
33
                    ->addArgument(
34
                        'update',
35
                        InputArgument::OPTIONAL,
36
                        'Set to argument value to Y to update.',
37
                        'Y'
38
                    );
39
40
            } else {
41
                $this->exe_type = 'uninstall';
42
                $this
43
                    ->setName('blend:uninstall')
44
                    ->setDescription('Uninstall Blend');
45
            }
46
47
        } else {
48
            $this->exe_type = 'install';
49
            $this
50
                ->setName('blend:install')
51
                ->setDescription('Please install Blend');
52
        }
53
    }
54
55
    /**
56
     * @param InputInterface $input
57
     * @param OutputInterface $output
58
     * @return int|null|void
59
     */
60
    protected function execute(InputInterface $input, OutputInterface $output)
61
    {
62
        $output->writeln(__METHOD__);
63
        switch ($this->exe_type) {
64
            case 'install':
65
                $this->blender->install('up', true);
66
                break;
67
            case 'uninstall':
68
                $this->blender->install('down', true);
69
                break;
70
            case 'update':
71
                if ($this->blender->requireUpdate()) {
72
                    $this->blender->update();
73
                }
74
                break;
75
            default:
76
                $output->writeln('Noting to do!');
77
        }
78
79
    }
80
}