X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fdrupal%2Fconsole%2Fsrc%2FBootstrap%2FDrupal.php;fp=vendor%2Fdrupal%2Fconsole%2Fsrc%2FBootstrap%2FDrupal.php;h=8786b273d1e58e8e34c12b345e13c8eaa3777631;hp=48ba2fe58cacda1de95a59a6dd46841eda884ff3;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hpb=aea91e65e895364e460983b890e295aa5d5540a5
diff --git a/vendor/drupal/console/src/Bootstrap/Drupal.php b/vendor/drupal/console/src/Bootstrap/Drupal.php
index 48ba2fe58..8786b273d 100644
--- a/vendor/drupal/console/src/Bootstrap/Drupal.php
+++ b/vendor/drupal/console/src/Bootstrap/Drupal.php
@@ -6,13 +6,16 @@ use Doctrine\Common\Annotations\AnnotationRegistry;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\HttpFoundation\Request;
+use Drupal\Component\FileCache\FileCacheFactory;
+use Drupal\Core\Database\Database;
use Drupal\Console\Core\Style\DrupalStyle;
use Drupal\Console\Core\Utils\ArgvInputReader;
use Drupal\Console\Core\Bootstrap\DrupalConsoleCore;
-use Drupal\Console\Utils\ExtendExtensionManager;
use Drupal\Console\Core\Utils\DrupalFinder;
+use Drupal\Console\Core\Bootstrap\DrupalInterface;
+use Drupal\Console\Core\Utils\ConfigurationManager;
-class Drupal
+class Drupal implements DrupalInterface
{
protected $autoload;
@@ -21,18 +24,33 @@ class Drupal
*/
protected $drupalFinder;
+ /**
+ * @var ConfigurationManager
+ */
+ protected $configurationManager;
+
/**
* Drupal constructor.
*
* @param $autoload
* @param $drupalFinder
+ * @param $configurationManager
*/
- public function __construct($autoload, DrupalFinder $drupalFinder)
- {
+ public function __construct(
+ $autoload,
+ DrupalFinder $drupalFinder,
+ ConfigurationManager $configurationManager
+ ) {
$this->autoload = $autoload;
$this->drupalFinder = $drupalFinder;
+ $this->configurationManager = $configurationManager;
}
+ /**
+ * Boot the Drupal object
+ *
+ * @return \Symfony\Component\DependencyInjection\ContainerBuilder
+ */
public function boot()
{
$output = new ConsoleOutput();
@@ -52,11 +70,8 @@ class Drupal
if (!class_exists('Drupal\Core\DrupalKernel')) {
$io->error('Class Drupal\Core\DrupalKernel does not exist.');
- $drupal = new DrupalConsoleCore(
- $this->drupalFinder->getComposerRoot(),
- $this->drupalFinder->getDrupalRoot()
- );
- return $drupal->boot();
+
+ return $this->bootDrupalConsoleCore();
}
try {
@@ -73,11 +88,6 @@ class Drupal
}
}
- $rebuildServicesFile = false;
- if ($command=='cache:rebuild' || $command=='cr') {
- $rebuildServicesFile = true;
- }
-
if ($debug) {
$io->writeln('⤠Creating request');
}
@@ -99,13 +109,32 @@ class Drupal
$io->writeln('⤠Creating Drupal kernel');
}
- $drupalKernel = DrupalKernel::createFromRequest(
- $request,
- $this->autoload,
- 'prod',
- false,
- $this->drupalFinder->getDrupalRoot()
- );
+ $updateCommands = [
+ 'update:execute',
+ 'upex',
+ 'updb',
+ 'update:entities',
+ 'upe'
+ ];
+
+ if (!in_array($command, $updateCommands)) {
+ $drupalKernel = DrupalKernel::createFromRequest(
+ $request,
+ $this->autoload,
+ 'prod',
+ false,
+ $this->drupalFinder->getDrupalRoot()
+ );
+ } else {
+ $drupalKernel = DrupalUpdateKernel::createFromRequest(
+ $request,
+ $this->autoload,
+ 'prod',
+ false,
+ $this->drupalFinder->getDrupalRoot()
+ );
+ }
+
if ($debug) {
$io->writeln("\r\033[K\033[1A\râ");
$io->writeln('⤠Registering dynamic services');
@@ -114,10 +143,8 @@ class Drupal
$drupalKernel->addServiceModifier(
new DrupalServiceModifier(
$this->drupalFinder->getComposerRoot(),
- $this->drupalFinder->getDrupalRoot(),
'drupal.command',
- 'drupal.generator',
- $rebuildServicesFile
+ 'drupal.generator'
)
);
@@ -125,15 +152,35 @@ class Drupal
$io->writeln("\r\033[K\033[1A\râ");
$io->writeln('⤠Rebuilding container');
}
+
+ // Fix an exception of FileCacheFactory not prefix not set when
+ // container is build and looks that as we depend on cache for
+ // AddServicesCompilerPass but container is not ready this prefix
+ // needs to be set manually to allow use of the cache files.
+ FileCacheFactory::setPrefix($this->drupalFinder->getDrupalRoot());
+
+ // Invalidate container to ensure rebuild of any cached state
+ // when boot is processed.
$drupalKernel->invalidateContainer();
- $drupalKernel->rebuildContainer();
- $drupalKernel->boot();
+ // Load legacy libraries, modules, register stream wrapper, and push
+ // request to request stack but without trigger processing of '/'
+ // request that invokes hooks like hook_page_attachments().
+ $drupalKernel->boot();
+ $drupalKernel->preHandle($request);
if ($debug) {
$io->writeln("\r\033[K\033[1A\râ");
}
$container = $drupalKernel->getContainer();
+
+ if ($this->shouldRedirectToDrupalCore($container)) {
+ $container = $this->bootDrupalConsoleCore();
+ $container->set('class_loader', $this->autoload);
+
+ return $container;
+ }
+
$container->set(
'console.root',
$this->drupalFinder->getComposerRoot()
@@ -141,8 +188,12 @@ class Drupal
AnnotationRegistry::registerLoader([$this->autoload, "loadClass"]);
- $configuration = $container->get('console.configuration_manager')
- ->getConfiguration();
+ $container->set(
+ 'console.configuration_manager',
+ $this->configurationManager
+ );
+
+ $configuration = $this->configurationManager->getConfiguration();
$container->get('console.translator_manager')
->loadCoreLanguage(
@@ -150,12 +201,6 @@ class Drupal
$this->drupalFinder->getComposerRoot()
);
- $consoleExtendConfigFile = $this->drupalFinder->getComposerRoot() . DRUPAL_CONSOLE .'/extend.console.config.yml';
- if (file_exists($consoleExtendConfigFile)) {
- $container->get('console.configuration_manager')
- ->importConfigurationFile($consoleExtendConfigFile);
- }
-
$container->get('console.renderer')
->setSkeletonDirs(
[
@@ -164,19 +209,78 @@ class Drupal
]
);
+ $container->set(
+ 'console.drupal_finder',
+ $this->drupalFinder
+ );
+
+ $container->set(
+ 'console.cache_key',
+ $drupalKernel->getContainerKey()
+ );
+
return $container;
} catch (\Exception $e) {
- if ($command == 'list') {
- $io->error($e->getMessage());
- }
- $drupal = new DrupalConsoleCore(
- $this->drupalFinder->getComposerRoot(),
- $this->drupalFinder->getDrupalRoot()
- );
- $container = $drupal->boot();
+ $container = $this->bootDrupalConsoleCore();
$container->set('class_loader', $this->autoload);
+ $notifyErrorCodes = [
+ 0,
+ 1045,
+ 1049,
+ 2002,
+ ];
+
+ if (in_array($e->getCode(), $notifyErrorCodes)) {
+ /**
+ * @var \Drupal\Console\Core\Utils\MessageManager $messageManager
+ */
+ $messageManager = $container->get('console.message_manager');
+ $messageManager->error(
+ $e->getMessage(),
+ $e->getCode(),
+ 'list',
+ 'site:install'
+ );
+ }
+
return $container;
}
}
+
+ /**
+ * Builds and boot a DrupalConsoleCore object
+ *
+ * @return \Symfony\Component\DependencyInjection\ContainerBuilder
+ */
+ protected function bootDrupalConsoleCore()
+ {
+ $drupal = new DrupalConsoleCore(
+ $this->drupalFinder->getComposerRoot(),
+ $this->drupalFinder->getDrupalRoot(),
+ $this->drupalFinder
+ );
+
+ return $drupal->boot();
+ }
+
+ /**
+ * Validate if flow should redirect to DrupalCore
+ *
+ * @param $container
+ * @return bool
+ */
+ protected function shouldRedirectToDrupalCore($container)
+ {
+ if (!Database::getConnectionInfo()) {
+ return true;
+ }
+
+ if (!$container->has('database')) {
+ return true;
+ }
+
+
+ return !$container->get('database')->schema()->tableExists('sessions');
+ }
}