Completed
Push — master ( cd1493...0fdab2 )
by Michael
02:22
created

CliApplication::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 6
ccs 0
cts 5
cp 0
rs 9.4285
cc 1
eloc 3
nc 1
nop 4
crap 2
1
<?php
2
3
namespace Stats;
4
5
use Joomla\Application\AbstractCliApplication;
6
use Joomla\Application\Cli\CliOutput;
7
use Joomla\DI\ContainerAwareInterface;
8
use Joomla\DI\ContainerAwareTrait;
9
use Joomla\Input\Cli;
10
use Joomla\Registry\Registry;
11
12
/**
13
 * CLI application for the stats server
14
 *
15
 * @since  1.0
16
 */
17
class CliApplication extends AbstractCliApplication implements ContainerAwareInterface
18
{
19
	use ContainerAwareTrait;
20
21
	/**
22
	 * The application's console object
23
	 *
24
	 * @var    Console
25
	 * @since  1.0
26
	 */
27
	private $console;
28
29
	/**
30
	 * CliApplication constructor.
31
	 *
32
	 * @param   Input\Cli  $input    The application's input object.
33
	 * @param   Registry   $config   The application's configuration.
34
	 * @param   CliOutput  $output   The application's output object.
35
	 * @param   Console    $console  The application's console object.
36
	 */
37
	public function __construct(Cli $input, Registry $config, CliOutput $output, Console $console)
38
	{
39
		parent::__construct($input, $config, $output);
40
41
		$this->console = $console;
42
	}
43
44
	/**
45
	 * Method to run the application routines.
46
	 *
47
	 * @return  void
48
	 *
49
	 * @since   1.0
50
	 * @throws  \InvalidArgumentException
51
	 */
52
	protected function doExecute()
53
	{
54
		$args = $this->input->args;
0 ignored issues
show
Bug introduced by
The property args does not seem to exist in Joomla\Input\Input.

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
55
56
		$command  = !empty($args[0]) ? $args[0] : 'help';
57
		$commands = $this->getConsole()->getCommands();
58
59
		if (!array_key_exists($command, $commands))
60
		{
61
			throw new \InvalidArgumentException(sprintf('The "%s" command is not valid.', $command));
62
		}
63
64
		// Execute the command
65
		$commands[$command]->execute();
66
	}
67
68
	/**
69
	 * Get the application's console object
70
	 *
71
	 * @return  Console
72
	 *
73
	 * @since   1.0
74
	 */
75
	public function getConsole()
76
	{
77
		return $this->console;
78
	}
79
80
	/**
81
	 * Output a nicely formatted title for the application.
82
	 *
83
	 * @param   string   $title     The title to display.
84
	 * @param   string   $subTitle  A subtitle.
85
	 * @param   integer  $width     Total width in chars.
86
	 *
87
	 * @return  $this
88
	 *
89
	 * @since   1.0
90
	 */
91
	public function outputTitle($title, $subTitle = '', $width = 60)
92
	{
93
		$this->out(str_repeat('-', $width));
94
		$this->out(str_repeat(' ', $width / 2 - (strlen($title) / 2)) . '<title>' . $title . '</title>');
95
96
		if ($subTitle)
97
		{
98
			$this->out(str_repeat(' ', $width / 2 - (strlen($subTitle) / 2)) . '<b>' . $subTitle . '</b>');
99
		}
100
101
		$this->out(str_repeat('-', $width));
102
103
		return $this;
104
	}
105
}
106