/
CLIRunner.php
70 lines (57 loc) · 1.88 KB
/
CLIRunner.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
namespace Concrete\Core\Foundation\Runtime\Run;
use Concrete\Core\Application\ApplicationAwareInterface;
use Concrete\Core\Application\ApplicationAwareTrait;
use Concrete\Core\Console\Application as ConsoleApplication;
use Symfony\Component\Console\Input\ArgvInput;
class CLIRunner implements RunInterface, ApplicationAwareInterface
{
use ApplicationAwareTrait;
/** @var ConsoleApplication */
protected $console;
public function __construct(ConsoleApplication $console)
{
$this->console = $console;
}
private function loadBootstrap()
{
$app = $this->app;
$console = $this->console;
include DIR_APPLICATION . '/bootstrap/app.php';
}
private function initializeSystemTimezone()
{
$config = $this->app->make('config');
if (!$config->has('app.server_timezone')) {
// There is no server timezone set.
$config->set('app.server_timezone', @date_default_timezone_get() ?: 'UTC');
}
@date_default_timezone_set($config->get('app.server_timezone'));
}
/**
* Run the runtime.
*
* @return mixed
*/
public function run()
{
$console = $this->console;
$this->app->instance('console', $console);
$this->loadBootstrap();
$this->initializeSystemTimezone();
$input = new ArgvInput();
if ($input->getFirstArgument() !== 'c5:update') {
if ($this->app->isInstalled()) {
$this->app->setupPackageAutoloaders();
$this->app->setupPackages();
}
}
// Handle legacy backwards compatibility
if (method_exists($console, 'setupDefaultCommands')) {
$console->setupDefaultCommands();
}
\Events::dispatch('on_before_console_run');
$console->run($input);
\Events::dispatch('on_after_console_run');
}
}