30 private $baseLocalePackages = [];
42 $this->packagePool = $packagePool;
51 $groupedPackages = $deployPackages = [];
52 $packages = $this->packagePool->getPackagesForDeployment(
$options);
53 foreach ($packages as $package) {
55 if ($package->isVirtual()) {
59 $level = $this->getInheritanceLevel($package);
60 $groupedPackages[$level][$package->getPath()] = $package;
63 ksort($groupedPackages);
65 foreach ($groupedPackages as $level => $levelPackages) {
66 $this->preparePackages($level, $levelPackages);
69 foreach ($groupedPackages as $levelPackages) {
70 foreach ($levelPackages as $package) {
71 $this->queue->add($package);
72 $deployPackages[] = $package;
76 $this->queue->process();
78 return $deployPackages;
86 private function preparePackages($level, array $levelPackages)
88 foreach ($levelPackages as $package) {
89 $package->aggregate();
91 $parentPackage =
null;
92 $packageId = $package->getArea() .
'/' . $package->getTheme();
94 if (isset($this->baseLocalePackages[$packageId])
95 && $package !== $this->baseLocalePackages[$packageId]
97 $parentPackage = $this->baseLocalePackages[$packageId];
99 $parentPackages = $package->getParentPackages();
100 foreach (array_reverse($parentPackages) as $ancestorPackage) {
101 if (!$ancestorPackage->isVirtual()) {
102 $parentPackage = $ancestorPackage;
105 if ($parentPackage ===
null) {
106 $parentPackage = $ancestorPackage;
110 if ($parentPackage) {
111 $package->setParent($parentPackage);
123 private function getInheritanceLevel(Package $package)
125 $level = $package->getInheritanceLevel();
126 $packageId = $package->getArea() .
'/' . $package->getTheme();
127 if (!isset($this->baseLocalePackages[$packageId])) {
128 $this->baseLocalePackages[$packageId] = $package;
__construct(PackagePool $packagePool, Queue $queue)