30
30
*/
31
31
final class LinkCommand extends BaseCommand
32
32
{
33
- public const REQUIRE_KEYS = ['require ' , 'require-dev ' ];
33
+ public const REQUIRE_KEYS = ['require ' , 'require-dev ' , ' replace ' ];
34
34
use ReadJsonFileTrait;
35
35
36
36
/**
@@ -86,7 +86,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int
86
86
87
87
$ dependencies = [
88
88
'require ' => $ this ->mapRequireDependencies ($ composer , $ config ->composerFiles , $ output ),
89
- 'require-dev ' => $ this ->mapRequireDevDependencies ($ composer , $ config ->composerFiles , $ output )
89
+ 'require-dev ' => $ this ->mapRequireDevDependencies ($ composer , $ config ->composerFiles , $ output ),
90
+ 'replace ' => $ this ->mapReplaceDependencies ($ composer , $ config ->composerFiles , $ output )
90
91
];
91
92
92
93
foreach ($ dependencies ['require ' ] as $ dependency ) {
@@ -96,8 +97,13 @@ protected function execute(InputInterface $input, OutputInterface $output): int
96
97
foreach ($ dependencies ['require-dev ' ] as $ dependency ) {
97
98
static ::$ fileContents [$ composerFile ]['require-dev ' ][$ dependency ] = '@dev ' ;
98
99
}
100
+
101
+ foreach ($ dependencies ['replace ' ] as $ dependency ) {
102
+ static ::$ fileContents [$ composerFile ]['require-dev ' ][$ dependency ] = '@dev ' ;
103
+ }
104
+
99
105
100
- foreach (array_merge ($ dependencies ['require ' ], $ dependencies ['require-dev ' ]) as $ dependency ) {
106
+ foreach (array_merge ($ dependencies ['require ' ], $ dependencies ['require-dev ' ], $ dependencies [ ' replace ' ] ) as $ dependency ) {
101
107
foreach ($ config ->composerFiles as $ f ) {
102
108
// mapDependencies reads the composer.json contents, if it's not there we don't need to map this dependency
103
109
if (!isset (static ::$ fileContents [$ f ])) {
@@ -166,6 +172,16 @@ private function mapRequireDevDependencies(array $composer, array $composerFiles
166
172
return array_unique (iterator_to_array ($ this ->mapDependencies ($ composer , $ composerFiles , 'require-dev ' , $ output )));
167
173
}
168
174
175
+ /**
176
+ * @param ComposerJsonType $composer
177
+ * @param array<string, string> $composerFiles
178
+ *
179
+ * @return array<string>
180
+ */
181
+ private function mapReplaceDependencies (array $ composer , array $ composerFiles , OutputInterface $ output ): array {
182
+ return array_unique (iterator_to_array ($ this ->mapDependencies ($ composer , $ composerFiles , 'replace ' , $ output )));
183
+ }
184
+
169
185
/**
170
186
* @param value-of<self::REQUIRE_KEYS> $key
171
187
* @param ComposerJsonType $composer
0 commit comments