class ScaffoldOptions
Per-project options from the 'extras' section of the composer.json file.
Projects that describe scaffold files do so via their scaffold options. This data is pulled from the 'drupal-scaffold' portion of the extras section of the project data.
@internal
Hierarchy
- class \Drupal\Composer\Plugin\Scaffold\ScaffoldOptions
Expanded class hierarchy of ScaffoldOptions
8 files declare their use of ScaffoldOptions
- AppendOp.php in composer/Plugin/ Scaffold/ Operations/ AppendOp.php 
- AppendOpTest.php in core/tests/ Drupal/ Tests/ Composer/ Plugin/ Scaffold/ Integration/ AppendOpTest.php 
- OperationInterface.php in composer/Plugin/ Scaffold/ Operations/ OperationInterface.php 
- ReplaceOp.php in composer/Plugin/ Scaffold/ Operations/ ReplaceOp.php 
- ReplaceOpTest.php in core/tests/ Drupal/ Tests/ Composer/ Plugin/ Scaffold/ Integration/ ReplaceOpTest.php 
File
- 
              composer/Plugin/ Scaffold/ ScaffoldOptions.php, line 14 
Namespace
Drupal\Composer\Plugin\ScaffoldView source
class ScaffoldOptions {
  
  /**
   * The raw data from the 'extras' section of the top-level composer.json file.
   *
   * @var array
   */
  protected $options = [];
  
  /**
   * ScaffoldOptions constructor.
   *
   * @param array $options
   *   The scaffold options taken from the 'drupal-scaffold' section.
   */
  protected function __construct(array $options) {
    $this->options = $options + [
      "allowed-packages" => [],
      "locations" => [],
      "symlink" => FALSE,
      "file-mapping" => [],
    ];
    // Define any default locations.
    $this->options['locations'] += [
      'project-root' => '.',
      'web-root' => '.',
    ];
  }
  
  /**
   * Determines if the provided 'extras' section has scaffold options.
   *
   * @param array $extras
   *   The contents of the 'extras' section.
   *
   * @return bool
   *   True if scaffold options have been declared
   */
  public static function hasOptions(array $extras) {
    return array_key_exists('drupal-scaffold', $extras);
  }
  
  /**
   * Creates a scaffold options object.
   *
   * @param array $extras
   *   The contents of the 'extras' section.
   *
   * @return self
   *   The scaffold options object representing the provided scaffold options
   */
  public static function create(array $extras) {
    $options = static::hasOptions($extras) ? $extras['drupal-scaffold'] : [];
    return new self($options);
  }
  
  /**
   * Creates a new scaffold options object with some values overridden.
   *
   * @param array $options
   *   Override values.
   *
   * @return self
   *   The scaffold options object representing the provided scaffold options
   */
  protected function override(array $options) {
    return new self($options + $this->options);
  }
  
  /**
   * Creates a new scaffold options object with an overridden 'symlink' value.
   *
   * @param bool $symlink
   *   Whether symlinking should be enabled or not.
   *
   * @return self
   *   The scaffold options object representing the provided scaffold options
   */
  public function overrideSymlink($symlink) {
    return $this->override([
      'symlink' => $symlink,
    ]);
  }
  
  /**
   * Determines whether any allowed packages were defined.
   *
   * @return bool
   *   Whether there are allowed packages
   */
  public function hasAllowedPackages() {
    return !empty($this->allowedPackages());
  }
  
  /**
   * Gets allowed packages from these options.
   *
   * @return array
   *   The list of allowed packages
   */
  public function allowedPackages() {
    return $this->options['allowed-packages'];
  }
  
  /**
   * Gets the location mapping table, e.g. 'webroot' => './'.
   *
   * @return array
   *   A map of name : location values
   */
  public function locations() {
    return $this->options['locations'];
  }
  
  /**
   * Determines whether a given named location is defined.
   *
   * @param string $name
   *   The location name to search for.
   *
   * @return bool
   *   True if the specified named location exist.
   */
  protected function hasLocation($name) {
    return array_key_exists($name, $this->locations());
  }
  
  /**
   * Gets a specific named location.
   *
   * @param string $name
   *   The name of the location to fetch.
   *
   * @return string
   *   The value of the provided named location
   */
  public function getLocation($name) {
    return $this->hasLocation($name) ? $this->locations()[$name] : FALSE;
  }
  
  /**
   * Determines if symlink mode is set.
   *
   * @return bool
   *   Whether or not 'symlink' mode
   */
  public function symlink() {
    return $this->options['symlink'];
  }
  
  /**
   * Determines if there are file mappings.
   *
   * @return bool
   *   Whether or not the scaffold options contain any file mappings
   */
  public function hasFileMapping() {
    return !empty($this->fileMapping());
  }
  
  /**
   * Returns the actual file mappings.
   *
   * @return array
   *   File mappings for just this config type.
   */
  public function fileMapping() {
    return $this->options['file-mapping'];
  }
  
  /**
   * Determines if there is defined a value for the 'gitignore' option.
   *
   * @return bool
   *   Whether or not there is a 'gitignore' option setting
   */
  public function hasGitIgnore() {
    return isset($this->options['gitignore']);
  }
  
  /**
   * Gets the value of the 'gitignore' option.
   *
   * @return bool
   *   The 'gitignore' option, or TRUE if undefined.
   */
  public function gitIgnore() {
    return $this->hasGitIgnore() ? $this->options['gitignore'] : TRUE;
  }
}Members
| Title Sort descending | Modifiers | Object type | Summary | 
|---|---|---|---|
| ScaffoldOptions::$options | protected | property | The raw data from the 'extras' section of the top-level composer.json file. | 
| ScaffoldOptions::allowedPackages | public | function | Gets allowed packages from these options. | 
| ScaffoldOptions::create | public static | function | Creates a scaffold options object. | 
| ScaffoldOptions::fileMapping | public | function | Returns the actual file mappings. | 
| ScaffoldOptions::getLocation | public | function | Gets a specific named location. | 
| ScaffoldOptions::gitIgnore | public | function | Gets the value of the 'gitignore' option. | 
| ScaffoldOptions::hasAllowedPackages | public | function | Determines whether any allowed packages were defined. | 
| ScaffoldOptions::hasFileMapping | public | function | Determines if there are file mappings. | 
| ScaffoldOptions::hasGitIgnore | public | function | Determines if there is defined a value for the 'gitignore' option. | 
| ScaffoldOptions::hasLocation | protected | function | Determines whether a given named location is defined. | 
| ScaffoldOptions::hasOptions | public static | function | Determines if the provided 'extras' section has scaffold options. | 
| ScaffoldOptions::locations | public | function | Gets the location mapping table, e.g. 'webroot' => './'. | 
| ScaffoldOptions::override | protected | function | Creates a new scaffold options object with some values overridden. | 
| ScaffoldOptions::overrideSymlink | public | function | Creates a new scaffold options object with an overridden 'symlink' value. | 
| ScaffoldOptions::symlink | public | function | Determines if symlink mode is set. | 
| ScaffoldOptions::__construct | protected | function | ScaffoldOptions constructor. | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
