function ComposerInspector::validateProject
Checks that `composer.json` is valid and `composer.lock` exists.
Parameters
string $working_dir: The directory to check.
Throws
\Drupal\package_manager\Exception\ComposerNotReadyException Thrown if:
- `composer.json` doesn't exist in the given directory or is invalid according to `composer validate`.
- `composer.lock` doesn't exist in the given directory.
2 calls to ComposerInspector::validateProject()
- ComposerInspector::getConfig in core/
modules/ package_manager/ src/ ComposerInspector.php - Returns a config value from Composer.
- ComposerInspector::validate in core/
modules/ package_manager/ src/ ComposerInspector.php - Checks that Composer commands can be run.
File
-
core/
modules/ package_manager/ src/ ComposerInspector.php, line 102
Class
- ComposerInspector
- Defines a class to get information from Composer.
Namespace
Drupal\package_managerCode
private function validateProject(string $working_dir) : void {
$messages = [];
$previous_exception = NULL;
// If either composer.json or composer.lock have changed, ensure the
// directory is in a completely valid state, according to Composer.
if ($this->invalidateCacheIfNeeded($working_dir)) {
try {
$this->runner
->run([
'validate',
'--check-lock',
'--no-check-publish',
'--with-dependencies',
'--no-ansi',
"--working-dir={$working_dir}",
]);
} catch (RuntimeException $e) {
$messages[] = $e->getMessage();
$previous_exception = $e;
}
}
// Check for the presence of composer.lock, because `composer validate`
// doesn't expect it to exist, but we do (see ::getInstalledPackagesList()).
if (!file_exists($working_dir . DIRECTORY_SEPARATOR . 'composer.lock')) {
$messages[] = $this->t('composer.lock not found in @dir.', [
'@dir' => $working_dir,
]);
}
if ($messages) {
throw new ComposerNotReadyException($working_dir, $messages, 0, $previous_exception);
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.