objectManager = $objectManager; $this->logger = $logger; $this->versionStorage = $versionStorage; $this->deployStrategyFactory = $deployStrategyFactory; $this->queueFactory = $queueFactory; } /** * Run deploy procedure * * @param array $options * @throws LocalizedException * @return void */ public function deploy(array $options) { $version = !empty($options[Options::CONTENT_VERSION]) && is_string($options[Options::CONTENT_VERSION]) ? $options[Options::CONTENT_VERSION] : (new \DateTime())->getTimestamp(); $this->versionStorage->save($version); if ($this->isRefreshContentVersionOnly($options)) { $this->logger->warning("New content version: " . $version); return; } $queue = $this->queueFactory->create( [ 'logger' => $this->logger, 'options' => $options, 'maxProcesses' => $this->getProcessesAmount($options), 'deployPackageService' => $this->objectManager->create( \Magento\Deploy\Service\DeployPackage::class, [ 'logger' => $this->logger ] ) ] ); $deployStrategy = $this->deployStrategyFactory->create( $options[Options::STRATEGY], [ 'queue' => $queue ] ); $packages = $deployStrategy->deploy($options); if ($options[Options::NO_JAVASCRIPT] !== true) { $deployRjsConfig = $this->objectManager->create(DeployRequireJsConfig::class, [ 'logger' => $this->logger ]); $deployI18n = $this->objectManager->create(DeployTranslationsDictionary::class, [ 'logger' => $this->logger ]); $deployBundle = $this->objectManager->create(Bundle::class, [ 'logger' => $this->logger ]); foreach ($packages as $package) { if (!$package->isVirtual()) { $deployRjsConfig->deploy($package->getArea(), $package->getTheme(), $package->getLocale()); $deployI18n->deploy($package->getArea(), $package->getTheme(), $package->getLocale()); $deployBundle->deploy($package->getArea(), $package->getTheme(), $package->getLocale()); } } } if ($options[Options::NO_HTML_MINIFY] !== true) { $this->objectManager->get(MinifyTemplates::class)->minifyTemplates(); } } /** * Returns jobs count * * @param array $options * @return int */ private function getProcessesAmount(array $options) { return isset($options[Options::JOBS_AMOUNT]) ? (int)$options[Options::JOBS_AMOUNT] : 0; } /** * Check if '--refresh-content-version-only' argument was inserted * * @param array $options * @return bool */ private function isRefreshContentVersionOnly(array $options) { return isset($options[Options::REFRESH_CONTENT_VERSION_ONLY]) && $options[Options::REFRESH_CONTENT_VERSION_ONLY]; } }