Initial Drupal 11 with DDEV setup
This commit is contained in:
229
vendor/drupal/core-composer-scaffold/Operations/OperationData.php
vendored
Normal file
229
vendor/drupal/core-composer-scaffold/Operations/OperationData.php
vendored
Normal file
@ -0,0 +1,229 @@
|
||||
<?php
|
||||
|
||||
namespace Drupal\Composer\Plugin\Scaffold\Operations;
|
||||
|
||||
/**
|
||||
* Holds parameter data for operation objects during operation creation only.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class OperationData {
|
||||
|
||||
const MODE = 'mode';
|
||||
const PATH = 'path';
|
||||
const OVERWRITE = 'overwrite';
|
||||
const PREPEND = 'prepend';
|
||||
const APPEND = 'append';
|
||||
const DEFAULT = 'default';
|
||||
const FORCE_APPEND = 'force-append';
|
||||
|
||||
/**
|
||||
* The parameter data.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $data;
|
||||
|
||||
/**
|
||||
* The destination path.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $destination;
|
||||
|
||||
/**
|
||||
* OperationData constructor.
|
||||
*
|
||||
* @param string $destination
|
||||
* The destination path.
|
||||
* @param mixed $data
|
||||
* The raw data array to wrap.
|
||||
*/
|
||||
public function __construct($destination, $data) {
|
||||
$this->destination = $destination;
|
||||
$this->data = $this->normalizeScaffoldMetadata($destination, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the destination path that this operation data is associated with.
|
||||
*
|
||||
* @return string
|
||||
* The destination path for the scaffold result.
|
||||
*/
|
||||
public function destination() {
|
||||
return $this->destination;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets operation mode.
|
||||
*
|
||||
* @return string
|
||||
* Operation mode.
|
||||
*/
|
||||
public function mode() {
|
||||
return $this->data[self::MODE];
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if path exists.
|
||||
*
|
||||
* @return bool
|
||||
* Returns true if path exists
|
||||
*/
|
||||
public function hasPath() {
|
||||
return isset($this->data[self::PATH]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets path.
|
||||
*
|
||||
* @return string
|
||||
* The path.
|
||||
*/
|
||||
public function path() {
|
||||
return $this->data[self::PATH];
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines overwrite.
|
||||
*
|
||||
* @return bool
|
||||
* Returns true if overwrite mode was selected.
|
||||
*/
|
||||
public function overwrite() {
|
||||
return !empty($this->data[self::OVERWRITE]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether 'force-append' has been set.
|
||||
*
|
||||
* @return bool
|
||||
* Returns true if 'force-append' mode was selected.
|
||||
*/
|
||||
public function forceAppend() {
|
||||
if ($this->hasDefault()) {
|
||||
return TRUE;
|
||||
}
|
||||
return !empty($this->data[self::FORCE_APPEND]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if prepend path exists.
|
||||
*
|
||||
* @return bool
|
||||
* Returns true if prepend exists.
|
||||
*/
|
||||
public function hasPrepend() {
|
||||
return isset($this->data[self::PREPEND]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets prepend path.
|
||||
*
|
||||
* @return string
|
||||
* Path to prepend data
|
||||
*/
|
||||
public function prepend() {
|
||||
return $this->data[self::PREPEND];
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if append path exists.
|
||||
*
|
||||
* @return bool
|
||||
* Returns true if prepend exists.
|
||||
*/
|
||||
public function hasAppend() {
|
||||
return isset($this->data[self::APPEND]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets append path.
|
||||
*
|
||||
* @return string
|
||||
* Path to append data
|
||||
*/
|
||||
public function append() {
|
||||
return $this->data[self::APPEND];
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if default path exists.
|
||||
*
|
||||
* @return bool
|
||||
* Returns true if there is default data available.
|
||||
*/
|
||||
public function hasDefault() {
|
||||
return isset($this->data[self::DEFAULT]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets default path.
|
||||
*
|
||||
* @return string
|
||||
* Path to default data
|
||||
*/
|
||||
public function default() {
|
||||
return $this->data[self::DEFAULT];
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalizes metadata by converting literal values into arrays.
|
||||
*
|
||||
* Conversions performed include:
|
||||
* - Boolean 'false' means "skip".
|
||||
* - A string means "replace", with the string value becoming the path.
|
||||
*
|
||||
* @param string $destination
|
||||
* The destination path for the scaffold file.
|
||||
* @param mixed $value
|
||||
* The metadata for this operation object, which varies by operation type.
|
||||
*
|
||||
* @return array
|
||||
* Normalized scaffold metadata with default values.
|
||||
*/
|
||||
protected function normalizeScaffoldMetadata($destination, $value) {
|
||||
$defaultScaffoldMetadata = [
|
||||
self::MODE => ReplaceOp::ID,
|
||||
self::PREPEND => NULL,
|
||||
self::APPEND => NULL,
|
||||
self::DEFAULT => NULL,
|
||||
self::OVERWRITE => TRUE,
|
||||
];
|
||||
|
||||
return $this->convertScaffoldMetadata($destination, $value) + $defaultScaffoldMetadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs the conversion-to-array step in normalizeScaffoldMetadata.
|
||||
*
|
||||
* @param string $destination
|
||||
* The destination path for the scaffold file.
|
||||
* @param mixed $value
|
||||
* The metadata for this operation object, which varies by operation type.
|
||||
*
|
||||
* @return array
|
||||
* Normalized scaffold metadata.
|
||||
*/
|
||||
protected function convertScaffoldMetadata($destination, $value) {
|
||||
if (is_bool($value)) {
|
||||
if (!$value) {
|
||||
return [self::MODE => SkipOp::ID];
|
||||
}
|
||||
throw new \RuntimeException("File mapping {$destination} cannot be given the value 'true'.");
|
||||
}
|
||||
if (empty($value)) {
|
||||
throw new \RuntimeException("File mapping {$destination} cannot be empty.");
|
||||
}
|
||||
if (is_string($value)) {
|
||||
$value = [self::PATH => $value];
|
||||
}
|
||||
// If there is no 'mode', but there is an 'append' or a 'prepend' path,
|
||||
// then the mode is 'append' (append + prepend).
|
||||
if (!isset($value[self::MODE]) && (isset($value[self::APPEND]) || isset($value[self::PREPEND]))) {
|
||||
$value[self::MODE] = AppendOp::ID;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user