DirectWritePreconditionBypass.php
Namespace
Drupal\package_managerFile
-
core/
modules/ package_manager/ src/ DirectWritePreconditionBypass.php
View source
<?php
declare (strict_types=1);
namespace Drupal\package_manager;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use PhpTuf\ComposerStager\API\Path\Value\PathInterface;
use PhpTuf\ComposerStager\API\Path\Value\PathListInterface;
use PhpTuf\ComposerStager\API\Precondition\Service\ActiveAndStagingDirsAreDifferentInterface;
use PhpTuf\ComposerStager\API\Process\Service\ProcessInterface;
use PhpTuf\ComposerStager\API\Translation\Value\TranslatableInterface;
/**
* Allows certain Composer Stager preconditions to be bypassed.
*
* Only certain preconditions can be bypassed; this class implements all of
* those interfaces, and only accepts them in its constructor.
*
* @internal
* This is an internal part of Package Manager and may be changed or removed
* at any time without warning. External code should not interact with this
* class.
*/
final class DirectWritePreconditionBypass implements ActiveAndStagingDirsAreDifferentInterface {
use StringTranslationTrait;
/**
* Whether or not the decorated precondition is being bypassed.
*
* @var bool
*/
private static bool $isBypassed = FALSE;
public function __construct(ActiveAndStagingDirsAreDifferentInterface $decorated) {
}
/**
* Bypasses the decorated precondition.
*/
public static function activate() : void {
static::$isBypassed = TRUE;
}
/**
* {@inheritdoc}
*/
public function getName() : TranslatableInterface {
return $this->decorated
->getName();
}
/**
* {@inheritdoc}
*/
public function getDescription() : TranslatableInterface {
return $this->decorated
->getDescription();
}
/**
* {@inheritdoc}
*/
public function getStatusMessage(PathInterface $activeDir, PathInterface $stagingDir, ?PathListInterface $exclusions = NULL, int $timeout = ProcessInterface::DEFAULT_TIMEOUT) : TranslatableInterface {
if (static::$isBypassed) {
return new TranslatableStringAdapter('This precondition has been skipped because it is not needed in direct-write mode.');
}
return $this->decorated
->getStatusMessage($activeDir, $stagingDir, $exclusions, $timeout);
}
/**
* {@inheritdoc}
*/
public function isFulfilled(PathInterface $activeDir, PathInterface $stagingDir, ?PathListInterface $exclusions = NULL, int $timeout = ProcessInterface::DEFAULT_TIMEOUT) : bool {
if (static::$isBypassed) {
return TRUE;
}
return $this->decorated
->isFulfilled($activeDir, $stagingDir, $exclusions, $timeout);
}
/**
* {@inheritdoc}
*/
public function assertIsFulfilled(PathInterface $activeDir, PathInterface $stagingDir, ?PathListInterface $exclusions = NULL, int $timeout = ProcessInterface::DEFAULT_TIMEOUT) : void {
if (static::$isBypassed) {
return;
}
$this->decorated
->assertIsFulfilled($activeDir, $stagingDir, $exclusions, $timeout);
}
/**
* {@inheritdoc}
*/
public function getLeaves() : array {
return [
$this,
];
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
DirectWritePreconditionBypass | Allows certain Composer Stager preconditions to be bypassed. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.