You are here

public function DrupalCoreRecommendedBuilder::getPackage in Drupal 9

Same name and namespace in other branches
  1. 8 composer/Generator/Builder/DrupalCoreRecommendedBuilder.php \Drupal\Composer\Generator\Builder\DrupalCoreRecommendedBuilder::getPackage()

Generate the Composer.json data for the current tag or branch.

Return value

array Composer json data.

Overrides BuilderInterface::getPackage

File

composer/Generator/Builder/DrupalCoreRecommendedBuilder.php, line 22

Class

DrupalCoreRecommendedBuilder
Builder to produce metapackage for drupal/core-recommended.

Namespace

Drupal\Composer\Generator\Builder

Code

public function getPackage() {
  $composer = $this
    ->initialPackageMetadata();

  // Pull up the composer lock data.
  $composerLockData = $this->drupalCoreInfo
    ->composerLock();
  if (!isset($composerLockData['packages'])) {
    return $composer;
  }

  // Make a list of packages we do not want to put in the 'require' section.
  $remove_list = [
    'drupal/core',
    'wikimedia/composer-merge-plugin',
    'composer/installers',
  ];

  // Copy the 'packages' section from the Composer lock into our 'require'
  // section. There is also a 'packages-dev' section, but we do not need
  // to pin 'require-dev' versions, as 'require-dev' dependencies are never
  // included from subprojects. Use 'drupal/core-dev' to get Drupal's
  // dev dependencies.
  foreach ($composerLockData['packages'] as $package) {

    // If there is no 'source' record, then this is a path repository
    // or something else that we do not want to include.
    if (isset($package['source']) && !in_array($package['name'], $remove_list)) {
      $composer['require'][$package['name']] = $package['version'];
    }
  }
  return $composer;
}