Passed
Push — master ( a30145...bc128f )
by Webysther
36s
created

ProgressBar::isDisabled()   B

Complexity

Conditions 5
Paths 3

Size

Total Lines 19
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 0
Metric Value
cc 5
eloc 10
nc 3
nop 0
dl 0
loc 19
ccs 0
cts 14
cp 0
crap 30
rs 8.8571
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Packagist Mirror.
7
 *
8
 * For the full license information, please view the LICENSE.md
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Webs\Mirror;
13
14
use Dariuszp\CliProgressBar;
15
16
/**
17
 * Progress bar for console.
18
 *
19
 * @author Webysther Nunes <[email protected]>
20
 */
21
class ProgressBar implements IProgressBar
22
{
23
    use Console;
24
25
    /**
26
     * @var bool
27
     */
28
    protected $disabled;
29
30
    /**
31
     * @var CliProgressBar
32
     */
33
    protected $progressBar;
34
35
    /**s
36
     * @var int
37
     */
38
    protected $total;
39
40
    /**
41
     * {@inheritdoc}
42
     */
43
    public function isDisabled():bool
44
    {
45
        if (isset($this->disabled)) {
46
            return $this->disabled;
47
        }
48
49
        $isQuiet = $this->output->isQuiet();
50
        $noProgress = $this->input->getOption('no-progress');
51
        $noAnsi = $this->input->getOption('no-ansi');
52
53
        if ($isQuiet || $noProgress || $noAnsi) {
54
            $this->disabled = true;
55
56
            return true;
57
        }
58
59
        $this->disabled = false;
60
61
        return false;
62
    }
63
64
    /**
65
     * {@inheritdoc}
66
     */
67
    public function start(int $total):IProgressBar
68
    {
69
        if ($this->isDisabled()) {
70
            return $this;
71
        }
72
73
        $this->total = $total;
74
        $this->progressBar = new CliProgressBar($total, 0);
75
76
        return $this;
77
    }
78
79
    /**
80
     * {@inheritdoc}
81
     */
82 View Code Duplication
    public function progress(int $current = 0):IProgressBar
83
    {
84
        if ($this->isDisabled()) {
85
            return $this;
86
        }
87
88
        if ($current) {
89
            $this->progressBar->progress($current);
90
91
            return $this;
92
        }
93
94
        $this->progressBar->progress();
95
96
        return $this;
97
    }
98
99
    /**
100
     * {@inheritdoc}
101
     */
102 View Code Duplication
    public function end():IProgressBar
103
    {
104
        if ($this->isDisabled()) {
105
            return $this;
106
        }
107
108
        $this->progressBar->progress($this->total);
109
        $this->progressBar->end();
110
111
        return $this;
112
    }
113
}
114