setName('config:preset') ->setDescription('Select a config preset') ->addArgument('preset', InputArgument::OPTIONAL, 'Preset to use for all unset config values', '') ->addOption('list', '', InputOption::VALUE_NONE, 'display available preset'); } protected function execute(InputInterface $input, OutputInterface $output): int { if ($input->getOption('list')) { $this->getEnum('', $list); $this->writeArrayInOutputFormat($input, $output, $list); return self::SUCCESS; } $presetArg = $input->getArgument('preset'); if ($presetArg !== '') { $preset = $this->getEnum($presetArg, $list); if ($preset === null) { $output->writeln('Invalid preset: ' . $presetArg . ''); $output->writeln('Available presets: ' . implode(', ', $list)); return self::INVALID; } $this->configManager->setLexiconPreset($preset); } $current = ConfigLexiconPreset::tryFrom($this->config->getSystemValueInt(ConfigManager::PRESET_CONFIGKEY, 0)) ?? ConfigLexiconPreset::NONE; $this->writeArrayInOutputFormat($input, $output, [$current->name], 'current preset: '); return self::SUCCESS; } private function getEnum(string $name, ?array &$list = null): ?ConfigLexiconPreset { $list = []; foreach (ConfigLexiconPreset::cases() as $case) { $list[] = $case->name; if (strtolower($case->name) === strtolower($name)) { return $case; } } return null; } }