![]() 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/Console/Command/App/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Deploy\Console\Command\App; use Magento\Deploy\Model\DeploymentConfig\Hash; use Magento\Framework\App\Config\ConfigSourceInterface; use Magento\Framework\App\DeploymentConfig\Writer; use Magento\Framework\App\ObjectManager; use Magento\Framework\Config\File\ConfigFilePool; use Magento\Framework\Console\Cli; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * Command for dump application state */ class ApplicationDumpCommand extends Command { const INPUT_CONFIG_TYPES = 'config-types'; /** * @var Writer */ private $writer; /** * @var ConfigSourceInterface[] */ private $sources; /** * @var Hash */ private $configHash; /** * ApplicationDumpCommand constructor * * @param Writer $writer * @param array $sources * @param Hash $configHash */ public function __construct( Writer $writer, array $sources, Hash $configHash = null ) { $this->writer = $writer; $this->sources = $sources; $this->configHash = $configHash ?: ObjectManager::getInstance()->get(Hash::class); parent::__construct(); } /** * @inheritdoc */ protected function configure() { $this->setName('app:config:dump'); $this->setDescription('Create dump of application'); $configTypes = array_unique(array_column($this->sources, 'namespace')); $this->addArgument( self::INPUT_CONFIG_TYPES, InputArgument::OPTIONAL | InputArgument::IS_ARRAY, sprintf('Space-separated list of config types or omit to dump all [%s]', implode(', ', $configTypes)) ); parent::configure(); } /** * Dump Application * * @param InputInterface $input * @param OutputInterface $output * @return boolean * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ protected function execute(InputInterface $input, OutputInterface $output) { $this->groupSourcesByPool(); $dumpedTypes = []; foreach ($this->sources as $pool => $sources) { $dump = []; $comments = []; foreach ($sources as $sourceData) { if ($this->skipDump($input, $sourceData)) { continue; } /** @var ConfigSourceInterface $source */ $source = $sourceData['source']; $namespace = $sourceData['namespace']; $dump[$namespace] = $source->get(); if (!empty($sourceData['comment'])) { $comments[$namespace] = is_string($sourceData['comment']) ? $sourceData['comment'] : $sourceData['comment']->get(); } } $this->writer->saveConfig( [$pool => $dump], true, null, $comments ); $dumpedTypes = array_unique($dumpedTypes + array_keys($dump)); if (!empty($comments)) { $output->writeln($comments); } } if (!$dumpedTypes) { $output->writeln('<error>Nothing dumped. Check the config types specified and try again'); return Cli::RETURN_FAILURE; } // Generate and save new hash of deployment configuration. $this->configHash->regenerate(); $output->writeln(sprintf('<info>Done. Config types dumped: %s</info>', implode(', ', $dumpedTypes))); return Cli::RETURN_SUCCESS; } /** * Groups sources by theirs pool. * * If source doesn't have pool option puts him into APP_CONFIG pool. * * @return void */ private function groupSourcesByPool() { $sources = []; foreach ($this->sources as $sourceData) { if (!isset($sourceData['pool'])) { $sourceData['pool'] = ConfigFilePool::APP_CONFIG; } $sources[$sourceData['pool']][] = $sourceData; } $this->sources = $sources; } /** * Check whether the dump source should be skipped * * @param InputInterface $input * @param array $sourceData * @return bool */ private function skipDump(InputInterface $input, array $sourceData): bool { $allowedTypes = $input->getArgument(self::INPUT_CONFIG_TYPES); if ($allowedTypes && !in_array($sourceData['namespace'], $allowedTypes)) { return true; } return false; } }