Docker::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 3
1
<?php
2
3
namespace Dock\Doctor;
4
5
use Dock\Doctor\Action\StartMachineOrInstall;
6
use Dock\IO\ProcessRunner;
7
use Dock\Installer\DockerInstaller;
8
use Symfony\Component\Console\Output\OutputInterface;
9
10
class Docker extends Task
11
{
12
    /**
13
     * @var DockerInstaller
14
     */
15
    private $dockerInstaller;
16
17
    /**
18
     * @var StartMachineOrInstall
19
     */
20
    private $startMachineOrInstall;
21
22
    /**
23
     * @param ProcessRunner         $processRunner
24
     * @param StartMachineOrInstall $startMachineOrInstall
25
     * @param DockerInstaller       $dockerInstaller
26
     */
27
    public function __construct(ProcessRunner $processRunner, StartMachineOrInstall $startMachineOrInstall, DockerInstaller $dockerInstaller)
28
    {
29
        $this->processRunner = $processRunner;
30
        $this->dockerInstaller = $dockerInstaller;
31
        $this->startMachineOrInstall = $startMachineOrInstall;
32
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37
    public function run(OutputInterface $output, $dryRun)
38
    {
39
        $this->handle(
40
            $output,
41
            'docker -v',
42
            'Docker is installed',
43
            'It seems docker is not installed.',
44
            'Install docker with `dock-cli docker:install`',
45
            $this->dockerInstaller,
46
            $dryRun
47
        );
48
49
        $this->handle(
50
            $output,
51
            'docker info',
52
            'Docker daemon is running',
53
            'It seems docker daemon is not running.',
54
            'Start restarting the Docker service or the VM',
55
            $this->startMachineOrInstall,
56
            $dryRun
57
        );
58
59
        $this->handle(
60
            $output,
61
            'ping -c1 172.17.42.1',
62
            'Can ping docker virtual interface',
63
            "Can't ping docker virtual interface.",
64
            'Install and start docker by running: `dock-cli docker:install`',
65
            $this->dockerInstaller,
66
            $dryRun
67
        );
68
    }
69
}
70