8 use Composer\Console\Application;
10 use Symfony\Component\Console\Input\ArrayInput;
11 use Symfony\Component\Console\Output\BufferedOutput;
26 private $directoryList;
36 $this->composerApp = $composerApp;
37 $this->directoryList = $directoryList;
52 $this->composerApp->setAutoExit(
false);
54 foreach ($packages as $package) {
55 $buffer =
new BufferedOutput();
56 $this->composerApp->resetComposer();
57 $this->composerApp->run(
59 [
'command' =>
'depends',
'--working-dir' => $this->directoryList->getRoot(),
'package' => $package]
63 $dependingPackages = $this->parseComposerOutput($buffer->fetch());
64 if ($excludeSelf ===
true) {
65 $dependingPackages = array_values(array_diff($dependingPackages, $packages));
67 $dependencies[$package] = $dependingPackages;
78 private function parseComposerOutput(
$output)
80 $rawLines = explode(PHP_EOL,
$output);
82 foreach ($rawLines as $rawLine) {
83 $parts = explode(
' ', $rawLine);
84 if (count(explode(
'/', $parts[0])) == 2) {
85 if (strpos($parts[0],
'magento/project-') ===
false) {
86 $packages[] = $parts[0];
checkDependencies(array $packages, $excludeSelf=false)
__construct(Application $composerApp, DirectoryList $directoryList)