Completed
Push — 0.4 ( bc6dc3...283c8e )
by jean
9s
created

ProgressBarProcessNotifier::onFailedLoop()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 2
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Darkilliant\ProcessBundle\ProcessNotifier;
4
5
use Darkilliant\ProcessBundle\Console\ProgressBar;
6
use Darkilliant\ProcessBundle\State\ProcessState;
7
use Darkilliant\ProcessBundle\Step\MonitorableStepInterface;
8
use Darkilliant\ProcessBundle\Step\StepInterface;
9
use Symfony\Component\Console\ConsoleEvents;
10
use Symfony\Component\Console\Event\ConsoleEvent;
11
use Symfony\Component\Console\Output\NullOutput;
12
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
13
14
/**
15
 * @internal
16
 * Class ProgressBarProcessNotifier
17
 */
18
class ProgressBarProcessNotifier extends AbstractProcessNotifier implements EventSubscriberInterface
19
{
20
    /** @var ProgressBar */
21
    private $progressBar;
22
23 15
    public function __construct(ProgressBar $progressBar)
24
    {
25 15
        $this->progressBar = $progressBar;
26 15
        $this->progressBar->setOutput(new NullOutput());
27 15
    }
28
29 1
    public static function getSubscribedEvents()
30
    {
31
        return [
32 1
            ConsoleEvents::COMMAND => ['onCommand', 255],
33
        ];
34
    }
35
36 1
    public function onCommand(ConsoleEvent $event)
37
    {
38 1
        $this->progressBar->setOutput($event->getOutput());
39 1
    }
40
41 1
    public function onStartProcess(ProcessState $state, StepInterface $step)
42
    {
43 1
        return;
44
    }
45
46 7
    public function onStartIterableProcess(ProcessState $state, StepInterface $step)
47
    {
48 7
        if (!$step instanceof MonitorableStepInterface) {
49 2
            return null;
50
        }
51
52 5
        if (!$state->getOptions()['progress_bar']) {
53 1
            return null;
54
        }
55
56 4
        $count = $step->count($state);
57
58 4
        if (!$count) {
59 1
            return null;
60
        }
61
62 3
        $this->progressBar->create($count, get_class($step));
63 3
    }
64
65 3
    public function onUpdateIterableProcess(ProcessState $state, StepInterface $step)
66
    {
67 3
        if (!$step instanceof MonitorableStepInterface) {
68 1
            return null;
69
        }
70
71 2
        if (!$state->getOptions()['progress_bar']) {
72 1
            return;
73
        }
74
75 1
        $this->progressBar->setProgress($step->getProgress($state));
76 1
    }
77
78 3
    public function onEndProcess(ProcessState $state, StepInterface $step)
79
    {
80 3
        if (!$step instanceof MonitorableStepInterface) {
81 1
            return null;
82
        }
83
84 2
        if (!$state->getOptions()['progress_bar']) {
85 1
            return;
86
        }
87
88 1
        $this->progressBar->finish();
89 1
    }
90
91 1
    public function onExecutedProcess(ProcessState $state, StepInterface $step)
92
    {
93 1
    }
94
95 1
    public function onFailedLoop(ProcessState $state, StepInterface $step)
96
    {
97 1
        return;
98
    }
99
100 1
    public function onSuccessLoop(ProcessState $state, StepInterface $step)
101
    {
102 1
        return;
103
    }
104
}
105