Skippable   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 44
rs 10
c 0
b 0
f 0
wmc 7

2 Methods

Rating   Name   Duplication   Size   Complexity  
A shouldProcess() 0 18 5
A skip() 0 9 2
1
<?php declare(strict_types=1);
2
3
namespace App\UI;
4
5
use App\Collection\Collection;
6
7
trait Skippable
8
{
9
    /**
10
     * @param \App\UI\UserInterface $ui
11
     *
12
     * @return bool
13
     */
14
    protected function skip(UserInterface $ui): bool
15
    {
16
        if ($ui->isDryRun()) {
17
            $ui->writeln('<info>[DRY-RUN]</info> Not doing anything...'.PHP_EOL);
18
19
            return true;
20
        }
21
22
        return false;
23
    }
24
25
    /**
26
     * @param \App\UI\UserInterface $ui
27
     * @param \App\Collection\Collection $collection
28
     * @param string $message
29
     * @param string $action
30
     *
31
     * @return bool
32
     */
33
    private function shouldProcess(UserInterface $ui, Collection $collection, string $message, string $action): bool
34
    {
35
        if ($collection->isEmpty()) {
36
            $ui->writeln(sprintf($ui->indent().'<comment>Nothing to %s.</comment>'.PHP_EOL, $action));
37
38
            return false;
39
        }
40
41
        $ui->writeln($message);
42
43
        $ui->write($ui->indent());
44
        if ($this->skip($ui) || !$ui->confirm()) {
45
            $ui->writeln(($ui->isDryRun() ? '' : PHP_EOL).'<info>Done.</info>'.PHP_EOL);
46
47
            return false;
48
        }
49
50
        return true;
51
    }
52
}
53