1
0
Fork 0
mirror of https://github.com/composer/composer synced 2025-05-11 01:22:54 +00:00

Allow querying InstalledVersions::isInstalled() for no-dev packages

This commit is contained in:
Nicolas Grekas 2021-02-09 11:36:19 +01:00
parent 03e8cacd12
commit 7d4501816c
6 changed files with 37 additions and 11 deletions

View file

@ -125,7 +125,7 @@ class FilesystemRepository extends WritableArrayRepository
if ($this->dumpVersions) {
$versions = $this->generateInstalledVersions($installationManager);
$versions = $this->generateInstalledVersions($installationManager, $devMode);
$fs->filePutContentsIfModified($repoDir.'/installed.php', '<?php return '.var_export($versions, true).';'."\n");
$installedVersionsClass = file_get_contents(__DIR__.'/../InstalledVersions.php');
@ -142,12 +142,13 @@ class FilesystemRepository extends WritableArrayRepository
/**
* @return ?array
*/
private function generateInstalledVersions(InstallationManager $installationManager)
private function generateInstalledVersions(InstallationManager $installationManager, $devMode)
{
if (!$this->dumpVersions) {
return null;
}
$devPackages = array_flip($this->devPackageNames);
$versions = array('versions' => array());
$packages = $this->getPackages();
$packages[] = $rootPackage = $this->rootPackage;
@ -175,20 +176,28 @@ class FilesystemRepository extends WritableArrayRepository
'version' => $package->getVersion(),
'aliases' => array(),
'reference' => $reference,
'dev-requirement' => isset($devPackages[$package->getName()]),
);
if ($package instanceof RootPackageInterface) {
$versions['root'] = $versions['versions'][$package->getName()];
$versions['root']['name'] = $package->getName();
$versions['root']['dev-requirement'] = $devMode;
}
}
// add provided/replaced packages
foreach ($packages as $package) {
$isDevPackage = isset($devPackages[$package->getName()]);
foreach ($package->getReplaces() as $replace) {
// exclude platform replaces as when they are really there we can not check for their presence
if (PlatformRepository::isPlatformPackage($replace->getTarget())) {
continue;
}
if (!isset($versions['versions'][$replace->getTarget()]['dev-requirement'])) {
$versions['versions'][$replace->getTarget()]['dev-requirement'] = $isDevPackage;
} elseif (!$isDevPackage) {
$versions['versions'][$replace->getTarget()]['dev-requirement'] = false;
}
$replaced = $replace->getPrettyConstraint();
if ($replaced === 'self.version') {
$replaced = $package->getPrettyVersion();
@ -202,6 +211,11 @@ class FilesystemRepository extends WritableArrayRepository
if (PlatformRepository::isPlatformPackage($provide->getTarget())) {
continue;
}
if (!isset($versions['versions'][$provide->getTarget()]['dev-requirement'])) {
$versions['versions'][$provide->getTarget()]['dev-requirement'] = $isDevPackage;
} elseif (!$isDevPackage) {
$versions['versions'][$provide->getTarget()]['dev-requirement'] = false;
}
$provided = $provide->getPrettyConstraint();
if ($provided === 'self.version') {
$provided = $package->getPrettyVersion();