Skip to content

Commit b574f10

Browse files
committed
Rename mainPackage to rootPackage in AutoloadGenerator and ensure we use RootPackageInterface
1 parent 07352ea commit b574f10

11 files changed

+92
-86
lines changed

src/Composer/Autoload/AutoloadGenerator.php

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Composer\IO\IOInterface;
1919
use Composer\Package\AliasPackage;
2020
use Composer\Package\PackageInterface;
21+
use Composer\Package\RootPackageInterface;
2122
use Composer\Repository\InstalledRepositoryInterface;
2223
use Composer\Repository\PlatformRepository;
2324
use Composer\Semver\Constraint\Bound;
@@ -136,7 +137,7 @@ public function setIgnorePlatformRequirements($ignorePlatformReqs)
136137
}
137138
}
138139

139-
public function dump(Config $config, InstalledRepositoryInterface $localRepo, PackageInterface $mainPackage, InstallationManager $installationManager, $targetDir, $scanPsrPackages = false, $suffix = '')
140+
public function dump(Config $config, InstalledRepositoryInterface $localRepo, RootPackageInterface $rootPackage, InstallationManager $installationManager, $targetDir, $scanPsrPackages = false, $suffix = '')
140141
{
141142
if ($this->classMapAuthoritative) {
142143
// Force scanPsrPackages when classmap is authoritative
@@ -193,8 +194,8 @@ public function dump(Config $config, InstalledRepositoryInterface $localRepo, Pa
193194

194195
// Collect information from all packages.
195196
$devPackageNames = $localRepo->getDevPackageNames();
196-
$packageMap = $this->buildPackageMap($installationManager, $mainPackage, $localRepo->getCanonicalPackages());
197-
$autoloads = $this->parseAutoloads($packageMap, $mainPackage, $this->devMode === false);
197+
$packageMap = $this->buildPackageMap($installationManager, $rootPackage, $localRepo->getCanonicalPackages());
198+
$autoloads = $this->parseAutoloads($packageMap, $rootPackage, $this->devMode === false);
198199

199200
// Process the 'psr-0' base directories.
200201
foreach ($autoloads['psr-0'] as $namespace => $paths) {
@@ -234,9 +235,9 @@ public function dump(Config $config, InstalledRepositoryInterface $localRepo, Pa
234235

235236
// add custom psr-0 autoloading if the root package has a target dir
236237
$targetDirLoader = null;
237-
$mainAutoload = $mainPackage->getAutoload();
238-
if ($mainPackage->getTargetDir() && !empty($mainAutoload['psr-0'])) {
239-
$levels = substr_count($filesystem->normalizePath($mainPackage->getTargetDir()), '/') + 1;
238+
$mainAutoload = $rootPackage->getAutoload();
239+
if ($rootPackage->getTargetDir() && !empty($mainAutoload['psr-0'])) {
240+
$levels = substr_count($filesystem->normalizePath($rootPackage->getTargetDir()), '/') + 1;
240241
$prefixes = implode(', ', array_map(function ($prefix) {
241242
return var_export($prefix, true);
242243
}, array_keys($mainAutoload['psr-0'])));
@@ -395,10 +396,13 @@ private function generateClassMap($dir, $excluded, $namespaceFilter, $autoloadTy
395396
return ClassMapGenerator::createMap($dir, $excluded, $showAmbiguousWarning ? $this->io : null, $namespaceFilter, $autoloadType, $scannedFiles);
396397
}
397398

398-
public function buildPackageMap(InstallationManager $installationManager, PackageInterface $mainPackage, array $packages)
399+
/**
400+
* @param RootPackageInterface $rootPackage
401+
*/
402+
public function buildPackageMap(InstallationManager $installationManager, PackageInterface $rootPackage, array $packages)
399403
{
400404
// build package => install path map
401-
$packageMap = array(array($mainPackage, ''));
405+
$packageMap = array(array($rootPackage, ''));
402406

403407
foreach ($packages as $package) {
404408
if ($package instanceof AliasPackage) {
@@ -440,26 +444,26 @@ protected function validatePackage(PackageInterface $package)
440444
/**
441445
* Compiles an ordered list of namespace => path mappings
442446
*
443-
* @param array $packageMap array of array(package, installDir-relative-to-composer.json)
444-
* @param PackageInterface $mainPackage root package instance
445-
* @param bool $filterOutRequireDevPackages whether to filter out require-dev packages
446-
* @return array array('psr-0' => array('Ns\\Foo' => array('installDir')))
447+
* @param array $packageMap array of array(package, installDir-relative-to-composer.json)
448+
* @param RootPackageInterface $rootPackage root package instance
449+
* @param bool $filterOutRequireDevPackages whether to filter out require-dev packages
450+
* @return array array('psr-0' => array('Ns\\Foo' => array('installDir')))
447451
*/
448-
public function parseAutoloads(array $packageMap, PackageInterface $mainPackage, $filterOutRequireDevPackages = false)
452+
public function parseAutoloads(array $packageMap, PackageInterface $rootPackage, $filterOutRequireDevPackages = false)
449453
{
450-
$mainPackageMap = array_shift($packageMap);
454+
$rootPackageMap = array_shift($packageMap);
451455
if ($filterOutRequireDevPackages) {
452-
$packageMap = $this->filterPackageMap($packageMap, $mainPackage);
456+
$packageMap = $this->filterPackageMap($packageMap, $rootPackage);
453457
}
454458
$sortedPackageMap = $this->sortPackageMap($packageMap);
455-
$sortedPackageMap[] = $mainPackageMap;
456-
array_unshift($packageMap, $mainPackageMap);
459+
$sortedPackageMap[] = $rootPackageMap;
460+
array_unshift($packageMap, $rootPackageMap);
457461

458-
$psr0 = $this->parseAutoloadsType($packageMap, 'psr-0', $mainPackage);
459-
$psr4 = $this->parseAutoloadsType($packageMap, 'psr-4', $mainPackage);
460-
$classmap = $this->parseAutoloadsType(array_reverse($sortedPackageMap), 'classmap', $mainPackage);
461-
$files = $this->parseAutoloadsType($sortedPackageMap, 'files', $mainPackage);
462-
$exclude = $this->parseAutoloadsType($sortedPackageMap, 'exclude-from-classmap', $mainPackage);
462+
$psr0 = $this->parseAutoloadsType($packageMap, 'psr-0', $rootPackage);
463+
$psr4 = $this->parseAutoloadsType($packageMap, 'psr-4', $rootPackage);
464+
$classmap = $this->parseAutoloadsType(array_reverse($sortedPackageMap), 'classmap', $rootPackage);
465+
$files = $this->parseAutoloadsType($sortedPackageMap, 'files', $rootPackage);
466+
$exclude = $this->parseAutoloadsType($sortedPackageMap, 'exclude-from-classmap', $rootPackage);
463467

464468
krsort($psr0);
465469
krsort($psr4);
@@ -1051,31 +1055,31 @@ public static function getInitializer(ClassLoader \$loader)
10511055
INITIALIZER;
10521056
}
10531057

1054-
protected function parseAutoloadsType(array $packageMap, $type, PackageInterface $mainPackage)
1058+
protected function parseAutoloadsType(array $packageMap, $type, RootPackageInterface $rootPackage)
10551059
{
10561060
$autoloads = array();
10571061

10581062
foreach ($packageMap as $item) {
10591063
list($package, $installPath) = $item;
10601064

10611065
$autoload = $package->getAutoload();
1062-
if ($this->devMode && $package === $mainPackage) {
1066+
if ($this->devMode && $package === $rootPackage) {
10631067
$autoload = array_merge_recursive($autoload, $package->getDevAutoload());
10641068
}
10651069

10661070
// skip misconfigured packages
10671071
if (!isset($autoload[$type]) || !is_array($autoload[$type])) {
10681072
continue;
10691073
}
1070-
if (null !== $package->getTargetDir() && $package !== $mainPackage) {
1074+
if (null !== $package->getTargetDir() && $package !== $rootPackage) {
10711075
$installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir()));
10721076
}
10731077

10741078
foreach ($autoload[$type] as $namespace => $paths) {
10751079
foreach ((array) $paths as $path) {
10761080
if (($type === 'files' || $type === 'classmap' || $type === 'exclude-from-classmap') && $package->getTargetDir() && !is_readable($installPath.'/'.$path)) {
10771081
// remove target-dir from file paths of the root package
1078-
if ($package === $mainPackage) {
1082+
if ($package === $rootPackage) {
10791083
$targetDir = str_replace('\\<dirsep\\>', '[\\\\/]', preg_quote(str_replace(array('/', '\\'), '<dirsep>', $package->getTargetDir())));
10801084
$path = ltrim(preg_replace('{^'.$targetDir.'}', '', ltrim($path, '\\/')), '\\/');
10811085
} else {
@@ -1141,11 +1145,11 @@ protected function getFileIdentifier(PackageInterface $package, $path)
11411145
/**
11421146
* Filters out dev-dependencies
11431147
*
1144-
* @param array $packageMap
1145-
* @param PackageInterface $mainPackage
1148+
* @param array $packageMap
1149+
* @param RootPackageInterface $rootPackage
11461150
* @return array
11471151
*/
1148-
protected function filterPackageMap(array $packageMap, PackageInterface $mainPackage)
1152+
protected function filterPackageMap(array $packageMap, RootPackageInterface $rootPackage)
11491153
{
11501154
$packages = array();
11511155
$include = array();
@@ -1174,7 +1178,7 @@ protected function filterPackageMap(array $packageMap, PackageInterface $mainPac
11741178
}
11751179
}
11761180
};
1177-
$add($mainPackage);
1181+
$add($rootPackage);
11781182

11791183
return array_filter(
11801184
$packageMap,

src/Composer/Plugin/PluginManager.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Composer\IO\IOInterface;
1818
use Composer\Package\CompletePackage;
1919
use Composer\Package\Package;
20+
use Composer\Package\RootPackage;
2021
use Composer\Package\Version\VersionParser;
2122
use Composer\Repository\RepositoryInterface;
2223
use Composer\Repository\InstalledRepository;
@@ -188,7 +189,7 @@ public function registerPackage(PackageInterface $package, $failOnMissingClasses
188189
$autoloads[] = array($autoloadPackage, $downloadPath);
189190
}
190191

191-
$map = $generator->parseAutoloads($autoloads, new Package('dummy', '1.0.0.0', '1.0.0'));
192+
$map = $generator->parseAutoloads($autoloads, new RootPackage('dummy/root-package', '1.0.0.0', '1.0.0'));
192193
$classLoader = $generator->createLoader($map);
193194
$classLoader->register();
194195

0 commit comments

Comments
 (0)