Skip to content

Commit bcc3219

Browse files
committed
-
1 parent 68075eb commit bcc3219

File tree

2 files changed

+16
-18
lines changed

2 files changed

+16
-18
lines changed

src/Command/UnpackCommand.php

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Composer\Installer;
1818
use Composer\Json\JsonFile;
1919
use Composer\Package\Locker;
20+
use Composer\Package\Version\VersionParser;
2021
use Symfony\Component\Console\Input\InputArgument;
2122
use Symfony\Component\Console\Input\InputInterface;
2223
use Symfony\Component\Console\Input\InputOption;
@@ -39,7 +40,7 @@ protected function configure()
3940
$this->setName('unpack')
4041
->setDescription('Unpack a Symfony pack.')
4142
->setDefinition(array(
42-
new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Installed packages to unpack"'),
43+
new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Installed packages to unpack.'),
4344
new InputOption('sort-packages', null, InputOption::VALUE_NONE, 'Sorts packages'),
4445
))
4546
;
@@ -55,37 +56,41 @@ protected function execute(InputInterface $input, OutputInterface $output)
5556
$locker = $composer->getLocker();
5657
$lockData = $locker->getLockData();
5758
$installedRepo = $composer->getRepositoryManager()->getLocalRepository();
59+
$versionParser = new VersionParser();
5860

5961
$op = new Operation(true, $input->getOption('sort-packages') || $composer->getConfig()->get('sort-packages'));
60-
foreach ($packages as $name) {
61-
if (null === $pkg = $installedRepo->findPackage($name, '*')) {
62-
$io->writeError(sprintf('<error>Package %s is not installed</>', $name));
62+
foreach ($versionParser->parseNameVersionPairs($packages) as $package) {
63+
if (null === $pkg = $installedRepo->findPackage($package['name'], '*')) {
64+
$io->writeError(sprintf('<error>Package %s is not installed</>', $package['name']));
65+
6366
return 1;
6467
}
6568

6669
$dev = false;
6770
foreach ($lockData['packages-dev'] as $p) {
68-
if ($name === $p['name']) {
71+
if ($package['name'] === $p['name']) {
6972
$dev = true;
7073

7174
break;
7275
}
7376
}
7477

75-
$op->addPackage($name, '*', $dev);
78+
$op->addPackage($package['name'], '*', $dev);
7679
}
7780

7881
$unpacker = new Unpacker($composer);
7982
$result = $unpacker->unpack($op);
80-
foreach ($result->getUnpacked() as $pkg) {
81-
$io->writeError(sprintf('<info>Unpacked %s dependencies</>', $pkg->getName()));
82-
}
8383

8484
// remove the packages themselves
8585
if (!$result->getUnpacked()) {
86+
$io->writeError('<info>Nothing to unpack</>');
8687
return;
8788
}
8889

90+
foreach ($result->getUnpacked() as $pkg) {
91+
$io->writeError(sprintf('<info>Unpacked %s dependencies</>', $pkg->getName()));
92+
}
93+
8994
foreach ($result->getUnpacked() as $package) {
9095
$manipulator->removeLink('require-dev', $package->getName());
9196
foreach ($lockData['packages-dev'] as $i => $pkg) {

src/Unpacker.php

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,12 @@ public function unpack(Operation $op): Result
3838
foreach ($op->getPackages() as $package) {
3939
$pkg = $this->composer->getRepositoryManager()->findPackage($package['name'], $package['version'] ?: '*');
4040

41-
// force unpack on profiles + add dev deps
42-
if ('symfony-profile' === $pkg->getType()) {
43-
foreach ($pkg->getDevRequires() as $link) {
44-
if (!$manipulator->addLink('require-dev', $link->getTarget(), $link->getPrettyConstraint(), $op->shouldSort())) {
45-
throw new \RuntimeException(sprintf('Unable to unpack package "%s".', $link->getTarget()));
46-
}
47-
}
48-
} elseif (
41+
// not unpackable or no --unpack flag or empty packs (markers)
42+
if (
4943
'symfony-pack' !== $pkg->getType() ||
5044
!$op->shouldUnpack() ||
5145
0 === count($pkg->getRequires()) + count($pkg->getDevRequires())
5246
) {
53-
// not unpackable or no --unpack flag or empty packs (markers)
5447
$result->addRequired($package['name'].($package['version'] ? ':'.$package['version'] : ''));
5548

5649
continue;

0 commit comments

Comments
 (0)