package_manager.install
File
-
core/
modules/ package_manager/ package_manager.install
View source
<?php
/**
* @file
* Contains install and update functions for Package Manager.
*/
declare (strict_types=1);
use Drupal\Core\Site\Settings;
use Drupal\package_manager\ComposerInspector;
use Drupal\package_manager\Exception\StageFailureMarkerException;
use Drupal\package_manager\FailureMarker;
use PhpTuf\ComposerStager\API\Exception\ExceptionInterface;
use PhpTuf\ComposerStager\API\Finder\Service\ExecutableFinderInterface;
/**
* Implements hook_requirements().
*/
function package_manager_requirements(string $phase) : array {
$requirements = [];
if (Settings::get('testing_package_manager', FALSE) === FALSE) {
$requirements['testing_package_manager'] = [
'title' => 'Package Manager',
'description' => t("Package Manager is available for early testing. To install the module set the value of 'testing_package_manager' to TRUE in your settings.php file."),
'severity' => REQUIREMENT_ERROR,
];
return $requirements;
}
// If we're able to check for the presence of the failure marker at all, do it
// irrespective of the current run phase. If the failure marker is there, the
// site is in an indeterminate state and should be restored from backup ASAP.
$service_id = FailureMarker::class;
if (\Drupal::hasService($service_id)) {
try {
\Drupal::service($service_id)->assertNotExists(NULL);
} catch (StageFailureMarkerException $exception) {
$requirements['package_manager_failure_marker'] = [
'title' => t('Failed Package Manager update detected'),
'description' => $exception->getMessage(),
'severity' => REQUIREMENT_ERROR,
];
}
}
if ($phase !== 'runtime') {
return $requirements;
}
/** @var \PhpTuf\ComposerStager\API\Finder\Service\ExecutableFinderInterface $executable_finder */
$executable_finder = \Drupal::service(ExecutableFinderInterface::class);
// Report the Composer version in use, as well as its path.
$title = t('Composer version');
try {
$requirements['package_manager_composer'] = [
'title' => $title,
'description' => t('@version (<code>@path</code>)', [
'@version' => \Drupal::service(ComposerInspector::class)->getVersion(),
'@path' => $executable_finder->find('composer'),
]),
'severity' => REQUIREMENT_INFO,
];
} catch (\Throwable $e) {
// All Composer Stager exceptions are translatable.
$message = $e instanceof ExceptionInterface ? $e->getTranslatableMessage() : $e->getMessage();
$requirements['package_manager_composer'] = [
'title' => $title,
'description' => t('Composer was not found. The error message was: @message', [
'@message' => $message,
]),
'severity' => REQUIREMENT_ERROR,
];
}
return $requirements;
}
Functions
Title | Deprecated | Summary |
---|---|---|
package_manager_requirements | Implements hook_requirements(). |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.