123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Deploy\Console\Command\App;
- use Magento\Config\App\Config\Type\System;
- use Magento\Config\Console\Command\EmulatedAdminhtmlAreaProcessor;
- use Magento\Deploy\Console\Command\App\SensitiveConfigSet\SensitiveConfigSetFacade;
- use Magento\Deploy\Model\DeploymentConfig\ChangeDetector;
- use Magento\Deploy\Model\DeploymentConfig\Hash;
- use Magento\Framework\App\Config\ScopeConfigInterface;
- 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\Input\InputOption;
- use Symfony\Component\Console\Output\OutputInterface;
- /**
- * Command for set sensitive variable through deploy process
- */
- class SensitiveConfigSetCommand extends Command
- {
- /**
- * Name of "interactive" input option
- */
- const INPUT_OPTION_INTERACTIVE = 'interactive';
- /**
- * Name of "configuration scope" input option
- */
- const INPUT_OPTION_SCOPE = 'scope';
- /**
- * Name of "configuration scope code" input option
- */
- const INPUT_OPTION_SCOPE_CODE = 'scope-code';
- /**
- * Name of "configuration path" input argument
- */
- const INPUT_ARGUMENT_PATH = 'path';
- /**
- * Name of "configuration value" input argument
- */
- const INPUT_ARGUMENT_VALUE = 'value';
- /**
- * The config change detector.
- *
- * @var ChangeDetector
- */
- private $changeDetector;
- /**
- * The hash manager.
- *
- * @var Hash
- */
- private $hash;
- /**
- * The facade for command.
- *
- * @var SensitiveConfigSetFacade
- */
- private $facade;
- /**
- * Emulator adminhtml area for CLI command.
- *
- * @var EmulatedAdminhtmlAreaProcessor
- */
- private $emulatedAreaProcessor;
- /**
- * @param SensitiveConfigSetFacade $facade The processor facade
- * @param ChangeDetector $changeDetector The config change detector
- * @param Hash $hash The hash manager
- * @param EmulatedAdminhtmlAreaProcessor $emulatedAreaProcessor Emulator adminhtml area for CLI command
- */
- public function __construct(
- SensitiveConfigSetFacade $facade,
- ChangeDetector $changeDetector,
- Hash $hash,
- EmulatedAdminhtmlAreaProcessor $emulatedAreaProcessor
- ) {
- $this->facade = $facade;
- $this->changeDetector = $changeDetector;
- $this->hash = $hash;
- $this->emulatedAreaProcessor = $emulatedAreaProcessor;
- parent::__construct();
- }
- /**
- * @inheritdoc
- */
- protected function configure()
- {
- $this->addArgument(
- self::INPUT_ARGUMENT_PATH,
- InputArgument::OPTIONAL,
- 'Configuration path for example group/section/field_name'
- );
- $this->addArgument(
- self::INPUT_ARGUMENT_VALUE,
- InputArgument::OPTIONAL,
- 'Configuration value'
- );
- $this->addOption(
- self::INPUT_OPTION_INTERACTIVE,
- 'i',
- InputOption::VALUE_NONE,
- 'Enable interactive mode to set all sensitive variables'
- );
- $this->addOption(
- self::INPUT_OPTION_SCOPE,
- null,
- InputOption::VALUE_OPTIONAL,
- 'Scope for configuration, if not set use \'default\'',
- ScopeConfigInterface::SCOPE_TYPE_DEFAULT
- );
- $this->addOption(
- self::INPUT_OPTION_SCOPE_CODE,
- null,
- InputOption::VALUE_OPTIONAL,
- 'Scope code for configuration, empty string by default',
- ''
- );
- $this->setName('config:sensitive:set')
- ->setDescription('Set sensitive configuration values');
- parent::configure();
- }
- /**
- * @inheritdoc
- */
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- if ($this->changeDetector->hasChanges(System::CONFIG_TYPE)) {
- $output->writeln(
- '<error>'
- . 'This command is unavailable right now. '
- . 'To continue working with it please run app:config:import or setup:upgrade command before.'
- . '</error>'
- );
- return Cli::RETURN_FAILURE;
- }
- try {
- $this->emulatedAreaProcessor->process(function () use ($input, $output) {
- $this->facade->process($input, $output);
- });
- $this->hash->regenerate(System::CONFIG_TYPE);
- return Cli::RETURN_SUCCESS;
- } catch (\Exception $e) {
- $output->writeln(
- sprintf('<error>%s</error>', $e->getMessage())
- );
- return Cli::RETURN_FAILURE;
- }
- }
- }
|