mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-09-01 15:28:02 +02:00
* NEW DatabaselessKernel to support operation without DB This is required for GraphQL code generation in CI (without a working runtime database/webserver environment). Context: https://github.com/silverstripe/silverstripe-graphql/issues/388 * New --no-database option for sake * Refactor to abstract class * Apply feedback peer review Co-authored-by: Aaron Carlino <unclecheese@leftandmain.com> Co-authored-by: Maxime Rainville <maxime@silverstripe.com>
36 lines
962 B
PHP
Executable File
36 lines
962 B
PHP
Executable File
<?php
|
|
|
|
// CLI specific bootstrapping
|
|
use SilverStripe\Control\CLIRequestBuilder;
|
|
use SilverStripe\Control\HTTPApplication;
|
|
use SilverStripe\Core\CoreKernel;
|
|
use SilverStripe\ORM\DB;
|
|
use SilverStripe\ORM\Connect\NullDatabase;
|
|
use SilverStripe\Core\DatabaselessKernel;
|
|
|
|
require __DIR__ . '/src/includes/autoload.php';
|
|
|
|
// Ensure that people can't access this from a web-server
|
|
if (!in_array(PHP_SAPI, ["cli", "cgi", "cgi-fcgi"])) {
|
|
echo "cli-script.php can't be run from a web request, you have to run it on the command-line.";
|
|
die();
|
|
}
|
|
|
|
// Build request and detect flush
|
|
$request = CLIRequestBuilder::createFromEnvironment();
|
|
|
|
|
|
$skipDatabase = in_array('--no-database', $argv);
|
|
if ($skipDatabase) {
|
|
DB::set_conn(new NullDatabase());
|
|
}
|
|
// Default application
|
|
$kernel = $skipDatabase
|
|
? new DatabaselessKernel(BASE_PATH)
|
|
: new CoreKernel(BASE_PATH);
|
|
|
|
$app = new HTTPApplication($kernel);
|
|
$response = $app->handle($request);
|
|
|
|
$response->output();
|