GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — develop ( 467c2a...fdb351 )
by Stuart
05:47
created

Feature_ConsoleSupport   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
c 1
b 0
f 0
lcom 0
cbo 7
dl 0
loc 51
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A addSwitches() 0 7 1
B initBeforeModulesAvailable() 0 35 5
A initAfterModulesAvailable() 0 4 1
1
<?php
2
3
/**
4
 * Copyright (c) 2011-present Mediasift Ltd
5
 * All rights reserved.
6
 *
7
 * Redistribution and use in source and binary forms, with or without
8
 * modification, are permitted provided that the following conditions
9
 * are met:
10
 *
11
 *   * Redistributions of source code must retain the above copyright
12
 *     notice, this list of conditions and the following disclaimer.
13
 *
14
 *   * Redistributions in binary form must reproduce the above copyright
15
 *     notice, this list of conditions and the following disclaimer in
16
 *     the documentation and/or other materials provided with the
17
 *     distribution.
18
 *
19
 *   * Neither the names of the copyright holders nor the names of his
20
 *     contributors may be used to endorse or promote products derived
21
 *     from this software without specific prior written permission.
22
 *
23
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
 * POSSIBILITY OF SUCH DAMAGE.
35
 *
36
 * @category  Libraries
37
 * @package   Storyplayer/Cli
38
 * @author    Stuart Herbert <[email protected]>
39
 * @copyright 2011-present Mediasift Ltd www.datasift.com
40
 * @license   http://www.opensource.org/licenses/bsd-license.php  BSD License
41
 * @link      http://datasift.github.io/storyplayer
42
 */
43
44
namespace DataSift\Storyplayer\Cli;
45
46
use Exception;
47
use stdClass;
48
use Phix_Project\CliEngine;
49
use Phix_Project\CliEngine\CliCommand;
50
use Phix_Project\ExceptionsLib1\Legacy_ErrorHandler;
51
use Phix_Project\ExceptionsLib1\Legacy_ErrorException;
52
use DataSift\Stone\ConfigLib\E5xx_ConfigFileNotFound;
53
use DataSift\Stone\ConfigLib\E5xx_InvalidConfigFile;
54
use DataSift\Storyplayer\PlayerLib\E4xx_NoSuchReport;
55
use DataSift\Storyplayer\PlayerLib\StoryTeller;
56
use DataSift\Storyplayer\Console\DevModeConsole;
57
use DataSift\Storyplayer\Injectables;
58
59
/**
60
 * Support for the console
61
 *
62
 * @category  Libraries
63
 * @package   Storyplayer/Cli
64
 * @author    Stuart Herbert <[email protected]>
65
 * @copyright 2011-present Mediasift Ltd www.datasift.com
66
 * @license   http://www.opensource.org/licenses/bsd-license.php  BSD License
67
 * @link      http://datasift.github.io/storyplayer
68
 */
69
class Feature_ConsoleSupport implements Feature
70
{
71
    public function addSwitches(CliCommand $command, $additionalContext)
72
    {
73
        $command->addSwitches([
74
            new Feature_DevModeSwitch,
75
            new Feature_UbLangConsoleSwitch,
76
        ]);
77
    }
78
79
    public function initBeforeModulesAvailable(CliEngine $engine, CliCommand $command, Injectables $injectables)
80
    {
81
        // shorthand
82
        $output = $injectables->output;
83
84
        // we also want to create storyplayer.log every time
85
        $devModeConsole = new DevModeConsole();
86
        $devModeConsole->addOutputToFile('storyplayer.log');
87
88
        // switch output plugins first, before we do anything else at all
89
        if (isset($engine->options->dev) && $engine->options->dev) {
90
            // switch our main output to 'dev mode'
91
            $output->usePluginAsConsole($devModeConsole);
92
            $devModeConsole->addOutputToStdout();
93
94
            // all done
95
            return;
96
        }
97
98
        // if we get here, then we only want the devMode console for our logfile
99
        $output->usePluginInSlot($devModeConsole, 'logfile');
100
101
        // now, do we want any other console?
102
        if (isset($engine->options->console)) {
103
            $consoleClass = "DataSift\\Storyplayer\\Console\\" . $engine->options->console;
104
            if (!class_exists($consoleClass)) {
105
                $output->logCliError("unable to find class '{$consoleClass}' to be our console");
106
                exit(1);
0 ignored issues
show
Coding Style Compatibility introduced by
The method initBeforeModulesAvailable() contains an exit expression.

An exit expression should only be used in rare cases. For example, if you write a short command line script.

In most cases however, using an exit expression makes the code untestable and often causes incompatibilities with other libraries. Thus, unless you are absolutely sure it is required here, we recommend to refactor your code to avoid its usage.

Loading history...
107
            }
108
109
            $console = new $consoleClass;
110
            $output->usePluginAsConsole($console);
111
            $console->addOutputToStdout();
112
        }
113
    }
114
115
    public function initAfterModulesAvailable(StoryTeller $st, CliEngine $engine, Injectables $injectables)
116
    {
117
        // no-op
118
    }
119
}
120