From ee8847fea48d14382d1d95fee70024388ff12d49 Mon Sep 17 00:00:00 2001 From: Michael S Date: Tue, 29 Sep 2020 10:33:37 +0100 Subject: [PATCH] Update ExtraPackage.php Add ability to override indexed repositories. e.g. ``` "repositories": { "privaterepo": { "type": "vcs", "url": "https://github.com/mycompany/privaterepo" }, "repo": { "type": "vcs", "url": "http://svn.example.org/private/repo" }, "privaterepo2": { "type": "vcs", "url": "https://github.com/mycompany/privaterepo2" } } ``` --- src/Merge/ExtraPackage.php | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Merge/ExtraPackage.php b/src/Merge/ExtraPackage.php index 340adda..519a0e1 100644 --- a/src/Merge/ExtraPackage.php +++ b/src/Merge/ExtraPackage.php @@ -202,7 +202,8 @@ protected function prependRepositories(RootPackageInterface $root) $repoManager = $this->composer->getRepositoryManager(); $newRepos = array(); - foreach ($this->json['repositories'] as $repoJson) { + $namedIndex = false; + foreach ($this->json['repositories'] as $repoKey => $repoJson) { if (!isset($repoJson['type'])) { continue; } @@ -212,14 +213,21 @@ protected function prependRepositories(RootPackageInterface $root) $repoJson ); $repoManager->prependRepository($repo); - $newRepos[] = $repo; + + if (is_numeric($repoKey)) { + $newRepos[] = $repo; + } + else { + // Indexed repository name. + $newRepos[$repoKey] = $repo; + $namedIndex = true; + } } $unwrapped = self::unwrapIfNeeded($root, 'setRepositories'); - $unwrapped->setRepositories(array_merge( - $newRepos, - $root->getRepositories() - )); + $repositories = $root->getRepositories(); + $repositories = $namedIndex ? ($newRepos + $repositories) : array_merge($newRepos, $repositories); + $unwrapped->setRepositories($repositories); } /**