![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-deploy/Strategy/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Deploy\Strategy; use Magento\Deploy\Console\DeployStaticOptions as Options; use Magento\Deploy\Package\Package; use Magento\Deploy\Package\PackagePool; use Magento\Deploy\Process\Queue; /** * Standard deployment strategy implementation */ class StandardDeploy implements StrategyInterface { /** * Package pool object * * @var PackagePool */ private $packagePool; /** * Deployment queue * * @var Queue */ private $queue; /** * StandardDeploy constructor * * @param PackagePool $packagePool * @param Queue $queue */ public function __construct( PackagePool $packagePool, Queue $queue ) { $this->packagePool = $packagePool; $this->queue = $queue; } /** * @inheritdoc */ public function deploy(array $options) { $deployedPackages = []; $packages = $this->packagePool->getPackagesForDeployment($options); foreach ($packages as $package) { /** @var Package $package */ if ($package->isVirtual()) { // skip packages which can not be referenced directly from web ... continue; } // ... and aggregate files from ancestors for others $package->aggregate(); $deployedPackages[] = $package; } $parentCompilationRequested = $options[Options::NO_PARENT] !== true; $includeThemesMap = array_flip($options[Options::THEME] ?? []); $excludeThemesMap = array_flip($options[Options::EXCLUDE_THEME] ?? []); foreach ($deployedPackages as $package) { if ($parentCompilationRequested || $this->canDeployTheme($package->getTheme(), $includeThemesMap, $excludeThemesMap)) { $this->queue->add($package); } } $this->queue->process(); return $deployedPackages; } /** * Verify if specified theme should be deployed * * @param string $theme * @param array $includedThemesMap * @param array $excludedEntitiesMap * @return bool */ private function canDeployTheme(string $theme, array $includedThemesMap, array $excludedEntitiesMap): bool { $includesAllThemes = array_key_exists('all', $includedThemesMap); $excludesNoneThemes = array_key_exists('none', $excludedEntitiesMap); if ($includesAllThemes && $excludesNoneThemes) { return true; } elseif (!$excludesNoneThemes) { return !array_key_exists($theme, $excludedEntitiesMap); } elseif (!$includesAllThemes) { return array_key_exists($theme, $includedThemesMap); } return true; } }