diff --git a/src/Command/LinkCommand.php b/src/Command/LinkCommand.php index 79b7629..62e97e2 100644 --- a/src/Command/LinkCommand.php +++ b/src/Command/LinkCommand.php @@ -30,7 +30,7 @@ */ final class LinkCommand extends BaseCommand { - public const REQUIRE_KEYS = ['require', 'require-dev']; + public const REQUIRE_KEYS = ['require', 'require-dev', 'replace']; use ReadJsonFileTrait; /** @@ -86,7 +86,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int $dependencies = [ 'require' => $this->mapRequireDependencies($composer, $config->composerFiles, $output), - 'require-dev' => $this->mapRequireDevDependencies($composer, $config->composerFiles, $output) + 'require-dev' => $this->mapRequireDevDependencies($composer, $config->composerFiles, $output), + 'replace' => $this->mapReplaceDependencies($composer, $config->composerFiles, $output) ]; foreach ($dependencies['require'] as $dependency) { @@ -96,8 +97,13 @@ protected function execute(InputInterface $input, OutputInterface $output): int foreach ($dependencies['require-dev'] as $dependency) { static::$fileContents[$composerFile]['require-dev'][$dependency] = '@dev'; } + + foreach ($dependencies['replace'] as $dependency) { + static::$fileContents[$composerFile]['require-dev'][$dependency] = '@dev'; + } + - foreach (array_merge($dependencies['require'], $dependencies['require-dev']) as $dependency) { + foreach (array_merge($dependencies['require'], $dependencies['require-dev'], $dependencies['replace']) as $dependency) { foreach ($config->composerFiles as $f) { // mapDependencies reads the composer.json contents, if it's not there we don't need to map this dependency if (!isset(static::$fileContents[$f])) { @@ -166,6 +172,16 @@ private function mapRequireDevDependencies(array $composer, array $composerFiles return array_unique(iterator_to_array($this->mapDependencies($composer, $composerFiles, 'require-dev', $output))); } + /** + * @param ComposerJsonType $composer + * @param array $composerFiles + * + * @return array + */ + private function mapReplaceDependencies(array $composer, array $composerFiles, OutputInterface $output): array { + return array_unique(iterator_to_array($this->mapDependencies($composer, $composerFiles, 'replace', $output))); + } + /** * @param value-of $key * @param ComposerJsonType $composer