8000 Merge pull request #2893 from naderman/require-delete-duplicate · composer/composer@8aac44d · GitHub
[go: up one dir, main page]

Skip to content

Commit 8aac44d

Browse files
committed
Merge pull request #2893 from naderman/require-delete-duplicate
When requiring a package remove it from require-dev and vice versa
2 parents f479db6 + 465f0e3 commit 8aac44d

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/Composer/Command/RequireCommand.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
8181
$requirements = $this->determineRequirements($input, $output, $input->getArgument('packages'));
8282

8383
$requireKey = $input->getOption('dev') ? 'require-dev' : 'require';
84+
$removeKey = $input->getOption('dev') ? 'require' : 'require-dev';
8485
$baseRequirements = array_key_exists($requireKey, $composer) ? $composer[$requireKey] : array();
8586
$requirements = $this->formatRequirements($requirements);
8687

@@ -90,9 +91,13 @@ protected function execute(InputInterface $input, OutputInterface $output)
9091
$versionParser->parseConstraints($constraint);
9192
}
9293

93-
if (!$this->updateFileCleanly($json, $baseRequirements, $requirements, $requireKey)) {
94+
if (!$this->updateFileCleanly($json, $baseRequirements, $requirements, $requireKey, $removeKey)) {
9495
foreach ($requirements as $package => $version) {
9596
$baseRequirements[$package] = $version;
97+
98+
if (isset($composer[$removeKey][$package])) {
99+
unset($composer[$removeKey][$package]);
100+
}
96101
}
97102

98103
$composer[$requireKey] = $baseRequirements;
@@ -134,7 +139,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
134139
return $status;
135140
}
136141

137-
private function updateFileCleanly($json, array $base, array $new, $requireKey)
142+
private function updateFileCleanly($json, array $base, array $new, $requireKey, $removeKey)
138143
{
139144
$contents = file_get_contents($json->getPath());
140145

@@ -144,6 +149,9 @@ private function updateFileCleanly($json, array $base, array $new, $requireKey)
144149
if (!$manipulator->addLink($requireKey, $package, $constraint)) {
145150
return false;
146151
}
152+
if (!$manipulator->removeSubNode($removeKey, $package)) {
153+
return false;
154+
}
147155
}
148156

149157
file_put_contents($json->getPath(), $manipulator->getContents());

0 commit comments

Comments
 (0)
0