Completed
Push — master ( b659c5...c65770 )
by Michael
10:22
created

ConfigFileTrait   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 1
dl 0
loc 38
ccs 0
cts 16
cp 0
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A addConfigFileOption() 0 6 1
A processConfigFile() 0 13 2
1
<?php
2
declare(strict_types = 1);
3
/**
4
 * Contains trait ConfigFileTrait.
5
 *
6
 * PHP version 7.0+
7
 *
8
 * LICENSE:
9
 * This file is part of Yet Another Php Eve Api Library also know as Yapeal
10
 * which can be used to access the Eve Online API data and place it into a
11
 * database.
12
 * Copyright (C) 2016-2017 Michael Cummings
13
 *
14
 * This program is free software: you can redistribute it and/or modify it
15
 * under the terms of the GNU Lesser General Public License as published by the
16
 * Free Software Foundation, either version 3 of the License, or (at your
17
 * option) any later version.
18
 *
19
 * This program is distributed in the hope that it will be useful, but WITHOUT
20
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
22
 * for more details.
23
 *
24
 * You should have received a copy of the GNU Lesser General Public License
25
 * along with this program. If not, see
26
 * <http://spdx.org/licenses/LGPL-3.0.html>.
27
 *
28
 * You should be able to find a copy of this license in the COPYING-LESSER.md
29
 * file. A copy of the GNU GPL should also be available in the COPYING.md file.
30
 *
31
 * @copyright 2016-2017 Michael Cummings
32
 * @license   LGPL-3.0+
33
 * @author    Michael Cummings <[email protected]>
34
 */
35
namespace Yapeal\Console;
36
37
use Symfony\Component\Console\Input\InputOption;
38
use Yapeal\Configuration\ConfigManagementInterface;
39
use Yapeal\Container\ContainerInterface;
40
41
/**
42
 * Trait ConfigFileTrait.
43
 */
44
trait ConfigFileTrait
45
{
46
    /**
47
     * @throws \Symfony\Component\Console\Exception\LogicException
48
     */
49
    protected function addConfigFileOption()
50
    {
51
        $mess = 'Configuration file to get settings from.'
52
            . ' <comment>NOTE: A (missing, unreadable, empty, etc) file will be silently ignored.</comment>';
53
        $this->addOption('configFile', 'c', InputOption::VALUE_REQUIRED, $mess);
0 ignored issues
show
Bug introduced by
It seems like addOption() must be provided by classes using this trait. How about adding it as abstract method to this trait?

This check looks for methods that are used by a trait but not required by it.

To illustrate, let’s look at the following code example

trait Idable {
    public function equalIds(Idable $other) {
        return $this->getId() === $other->getId();
    }
}

The trait Idable provides a method equalsId that in turn relies on the method getId(). If this method does not exist on a class mixing in this trait, the method will fail.

Adding the getId() as an abstract method to the trait will make sure it is available.

Loading history...
54
    }
55
    /**
56
     * Process the configuration file gotten on the CLI.
57
     *
58
     * NOTE: All settings from this configuration file overwrite any existing values.
59
     *
60
     * @param string             $pathFile Path and file name of config file to
61
     *                                     be processed.
62
     * @param ContainerInterface $dic      Instance of Container that will be
63
     *                                     updated.
64
     *
65
     * @throws \DomainException
66
     * @throws \LogicException
67
     */
68
    protected function processConfigFile(string $pathFile, ContainerInterface $dic)
69
    {
70
        $pathFile = trim($pathFile);
71
        if ('' === $pathFile) {
72
            return;
73
        }
74
        /**
75
         * @var ConfigManagementInterface $manager
76
         */
77
        $manager = $dic['Yapeal.Configuration.Callable.Manager'];
78
        $manager->addConfigFile($pathFile, 1);
79
        $manager->update();
80
    }
81
}
82