5 * Contains \Drupal\Console\Core\Command\Settings\SetCommand.
8 namespace Drupal\Console\Core\Command\Settings;
10 use Symfony\Component\Console\Input\InputInterface;
11 use Symfony\Component\Console\Input\InputArgument;
12 use Symfony\Component\Console\Output\OutputInterface;
13 use Symfony\Component\Yaml\Dumper;
14 use Symfony\Component\Yaml\Parser;
15 use Symfony\Component\Console\Command\Command;
16 use Drupal\Console\Core\Command\Shared\CommandTrait;
17 use Drupal\Console\Core\Utils\ConfigurationManager;
18 use Drupal\Console\Core\Utils\NestedArray;
19 use Drupal\Console\Core\Style\DrupalStyle;
24 * @package Drupal\Console\Core\Command\Settings
26 class SetCommand extends Command
31 * @var ConfigurationManager
33 protected $configurationManager;
38 protected $nestedArray;
41 * CheckCommand constructor.
43 * @param ConfigurationManager $configurationManager
44 * @param NestedArray $nestedArray
46 public function __construct(
47 ConfigurationManager $configurationManager,
48 NestedArray $nestedArray
50 $this->configurationManager = $configurationManager;
51 $this->nestedArray = $nestedArray;
53 parent::__construct();
59 protected function configure()
62 ->setName('settings:set')
65 InputArgument::REQUIRED,
66 $this->trans('commands.settings.set.arguments.name'),
71 InputArgument::REQUIRED,
72 $this->trans('commands.settings.set.arguments.value'),
75 ->setDescription($this->trans('commands.settings.set.description'));
81 protected function execute(InputInterface $input, OutputInterface $output)
83 $io = new DrupalStyle($input, $output);
84 $parser = new Parser();
85 $dumper = new Dumper();
87 $settingName = $input->getArgument('name');
88 $settingValue = $input->getArgument('value');
90 $userConfigFile = sprintf(
91 '%s/.console/config.yml',
92 $this->configurationManager->getHomeDirectory()
95 if (!file_exists($userConfigFile)) {
98 $this->trans('commands.settings.set.messages.missing-file'),
106 $userConfigFileParsed = $parser->parse(
107 file_get_contents($userConfigFile)
109 } catch (\Exception $e) {
112 'commands.settings.set.messages.error-parsing'
113 ) . ': ' . $e->getMessage()
118 $parents = array_merge(['application'], explode(".", $settingName));
120 $this->nestedArray->setValue(
121 $userConfigFileParsed,
128 $userConfigFileDump = $dumper->dump($userConfigFileParsed, 10);
129 } catch (\Exception $e) {
132 $this->trans('commands.settings.set.messages.error-generating'),
140 if ($settingName == 'language') {
141 $this->getApplication()
143 ->changeCoreLanguage($settingValue);
145 $translatorLanguage = $this->getApplication()->getTranslator()->getLanguage();
146 if ($translatorLanguage != $settingValue) {
149 $this->trans('commands.settings.set.messages.missing-language'),
159 file_put_contents($userConfigFile, $userConfigFileDump);
160 } catch (\Exception $e) {
163 $this->trans('commands.settings.set.messages.error-writing'),
173 $this->trans('commands.settings.set.messages.success'),