You are here

public static function ComposerUtility::createForDirectory in Automatic Updates 8.2

Creates a utility object using the files in a given directory.

Parameters

string $dir: The directory that contains composer.json and composer.lock.

Return value

\Drupal\package_manager\ComposerUtility The utility object.

4 calls to ComposerUtility::createForDirectory()
ReadinessValidationManager::run in src/Validation/ReadinessValidationManager.php
Dispatches the readiness check event and stores the results.
StagedProjectsValidatorTest::createEvent in tests/src/Unit/StagedProjectsValidatorTest.php
Creates a pre-commit event object for testing.
Updater::begin in src/Updater.php
Begins the update.
Updater::commit in src/Updater.php
Commits the current update.

File

package_manager/src/ComposerUtility.php, line 48

Class

ComposerUtility
Defines a utility object to get information from Composer's API.

Namespace

Drupal\package_manager

Code

public static function createForDirectory(string $dir) : self {
  $io = new NullIO();
  $configuration = $dir . DIRECTORY_SEPARATOR . 'composer.json';

  // The Composer factory requires that either the HOME or COMPOSER_HOME
  // environment variables be set, so momentarily set the COMPOSER_HOME
  // variable to the directory we're trying to create a Composer instance for.
  // We have to do this because the Composer factory doesn't give us a way to
  // pass the home directory in.
  // @see \Composer\Factory::getHomeDir()
  $home = getenv('COMPOSER_HOME');
  putenv("COMPOSER_HOME={$dir}");
  $composer = Factory::create($io, $configuration);
  putenv("COMPOSER_HOME={$home}");
  return new static($composer);
}