17
17
use Composer \Installer ;
18
18
use Composer \Json \JsonFile ;
19
19
use Composer \Package \Locker ;
20
+ use Composer \Package \Version \VersionParser ;
20
21
use Symfony \Component \Console \Input \InputArgument ;
21
22
use Symfony \Component \Console \Input \InputInterface ;
22
23
use Symfony \Component \Console \Input \InputOption ;
@@ -39,7 +40,7 @@ protected function configure()
39
40
$ this ->setName ('unpack ' )
40
41
->setDescription ('Unpack a Symfony pack. ' )
41
42
->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. ' ),
43
44
new InputOption ('sort-packages ' , null , InputOption::VALUE_NONE , 'Sorts packages ' ),
44
45
))
45
46
;
@@ -55,37 +56,41 @@ protected function execute(InputInterface $input, OutputInterface $output)
55
56
$ locker = $ composer ->getLocker ();
56
57
$ lockData = $ locker ->getLockData ();
57
58
$ installedRepo = $ composer ->getRepositoryManager ()->getLocalRepository ();
59
+ $ versionParser = new VersionParser ();
58
60
59
61
$ 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
+
63
66
return 1 ;
64
67
}
65
68
66
69
$ dev = false ;
67
70
foreach ($ lockData ['packages-dev ' ] as $ p ) {
68
- if ($ name === $ p ['name ' ]) {
71
+ if ($ package [ ' name ' ] === $ p ['name ' ]) {
69
72
$ dev = true ;
70
73
71
74
break ;
72
75
}
73
76
}
74
77
75
- $ op ->addPackage ($ name , '* ' , $ dev );
78
+ $ op ->addPackage ($ package [ ' name ' ] , '* ' , $ dev );
76
79
}
77
80
78
81
$ unpacker = new Unpacker ($ composer );
79
82
$ result = $ unpacker ->unpack ($ op );
80
- foreach ($ result ->getUnpacked () as $ pkg ) {
81
- $ io ->writeError (sprintf ('<info>Unpacked %s dependencies</> ' , $ pkg ->getName ()));
82
- }
83
83
84
84
// remove the packages themselves
85
85
if (!$ result ->getUnpacked ()) {
86
+ $ io ->writeError ('<info>Nothing to unpack</> ' );
86
87
return ;
87
88
}
88
89
90
+ foreach ($ result ->getUnpacked () as $ pkg ) {
91
+ $ io ->writeError (sprintf ('<info>Unpacked %s dependencies</> ' , $ pkg ->getName ()));
92
+ }
93
+
89
94
foreach ($ result ->getUnpacked () as $ package ) {
90
95
$ manipulator ->removeLink ('require-dev ' , $ package ->getName ());
91
96
foreach ($ lockData ['packages-dev ' ] as $ i => $ pkg ) {
0 commit comments