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;
23 * @package Drupal\Console\Core\Command\Settings
25 class SetCommand extends Command
30 * @var ConfigurationManager
32 protected $configurationManager;
37 protected $nestedArray;
40 * CheckCommand constructor.
41 * @param ConfigurationManager $configurationManager
42 * @param NestedArray $nestedArray
44 public function __construct(
45 ConfigurationManager $configurationManager,
46 NestedArray $nestedArray
48 $this->configurationManager = $configurationManager;
49 $this->nestedArray = $nestedArray;
51 parent::__construct();
57 protected function configure()
60 ->setName('settings:set')
63 InputArgument::REQUIRED,
64 $this->trans('commands.settings.set.arguments.name'),
69 InputArgument::REQUIRED,
70 $this->trans('commands.settings.set.arguments.value'),
73 ->setDescription($this->trans('commands.settings.set.description'));
79 protected function execute(InputInterface $input, OutputInterface $output)
81 $io = new DrupalStyle($input, $output);
82 $parser = new Parser();
83 $dumper = new Dumper();
85 $settingName = $input->getArgument('name');
86 $settingValue = $input->getArgument('value');
88 $userConfigFile = sprintf(
89 '%s/.console/config.yml',
90 $this->configurationManager->getHomeDirectory()
93 if (!file_exists($userConfigFile)) {
96 $this->trans('commands.settings.set.messages.missing-file'),
104 $userConfigFileParsed = $parser->parse(
105 file_get_contents($userConfigFile)
107 } catch (\Exception $e) {
110 'commands.settings.set.messages.error-parsing'
111 ) . ': ' . $e->getMessage()
116 $parents = array_merge(['application'], explode(".", $settingName));
118 $this->nestedArray->setValue(
119 $userConfigFileParsed,
126 $userConfigFileDump = $dumper->dump($userConfigFileParsed, 10);
127 } catch (\Exception $e) {
130 $this->trans('commands.settings.set.messages.error-generating'),
138 if ($settingName == 'language') {
139 $this->getApplication()
141 ->changeCoreLanguage($settingValue);
143 $translatorLanguage = $this->getApplication()->getTranslator()->getLanguage();
144 if ($translatorLanguage != $settingValue) {
147 $this->trans('commands.settings.set.messages.missing-language'),
157 file_put_contents($userConfigFile, $userConfigFileDump);
158 } catch (\Exception $e) {
161 $this->trans('commands.settings.set.messages.error-writing'),
171 $this->trans('commands.settings.set.messages.success'),