Passed
Push — main ( 400cf4...75e45b )
by Felix
03:05
created

AbstractCommand::showInfo()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
1
<?php
2
3
namespace Aoe\FeatureFlag\Command;
4
5
/***************************************************************
6
 *  Copyright notice
7
 *
8
 *  (c) 2021 AOE GmbH <[email protected]>
9
 *
10
 *  All rights reserved
11
 *
12
 *  This script is part of the TYPO3 project. The TYPO3 project is
13
 *  free software; you can redistribute it and/or modify
14
 *  it under the terms of the GNU General Public License as published by
15
 *  the Free Software Foundation; either version 3 of the License, or
16
 *  (at your option) any later version.
17
 *
18
 *  The GNU General Public License can be found at
19
 *  http://www.gnu.org/copyleft/gpl.html.
20
 *
21
 *  This script is distributed in the hope that it will be useful,
22
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
23
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24
 *  GNU General Public License for more details.
25
 *
26
 *  This copyright notice MUST APPEAR in all copies of the script!
27
 ***************************************************************/
28
29
use Aoe\FeatureFlag\Service\Exception\FeatureNotFoundException;
30
use Aoe\FeatureFlag\Service\FeatureFlagService;
31
use Symfony\Component\Console\Command\Command;
32
use Symfony\Component\Console\Style\SymfonyStyle;
33
use TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException;
34
35
abstract class AbstractCommand extends Command
36
{
37
    /**
38
     * @var FeatureFlagService
39
     */
40
    protected $featureFlagService;
41
42
    /**
43
     * @var SymfonyStyle
44
     */
45
    protected $inputOutput;
46
47 3
    public function __construct(FeatureFlagService $featureFlagService)
48
    {
49 3
        parent::__construct();
50 3
        $this->featureFlagService = $featureFlagService;
51 3
    }
52
53
    /**
54
     * Enable or disable features. $features can be a comma-separated list of feature names
55
     * @param string $features
56
     * @param boolean $enabled
57
     * @throws FeatureNotFoundException
58
     * @throws IllegalObjectTypeException
59
     */
60 2
    protected function setFeatureStatus(string $features, bool $enabled): void
61
    {
62 2
        $features = array_map('trim', explode(',', $features));
63 2
        foreach ($features as $feature) {
64 2
            $info = ($enabled === true) ? 'Activate' : 'Deactivate';
65 2
            $this->showInfo($info . ' feature: ' . $feature);
66 2
            $this->featureFlagService->updateFeatureFlag($feature, $enabled);
67
        }
68 2
        $this->showInfo('Update visibility of records (e.g. content elements), which are connected with features');
69 2
        $this->featureFlagService->flagEntries();
70 2
    }
71
72
    /**
73
     * @param string $info
74
     */
75
    protected function showInfo(string $info): void
76
    {
77
        $this->inputOutput->block($info, 'INFO', 'fg=green', '', false);
78
    }
79
}
80