/**
* Internal function to execute the command.
*
* @param InputInterface $input The input to inject into the command.
* @param OutputInterface $output The output to inject into the command.
*
* @return integer The command exit code
*
* @since 4.0.0
* @throws \Exception
*/
protected function doExecute(InputInterface $input, OutputInterface $output) : int
{
$this->configureIO($input, $output);
$options = $this->getOptions();
if (!$this->retrieveOptionsFromInput($options)) {
return self::CONFIG_OPTIONS_WRONG;
}
if (!$this->validateOptions()) {
return self::CONFIG_VALIDATION_FAILED;
}
$initialOptions = $this->getInitialConfigurationOptions()->toArray();
$combinedOptions = $this->sanitizeOptions(array_merge($initialOptions, $this->options));
if (!$this->checkDb($combinedOptions)) {
return self::DB_VALIDATION_FAILED;
}
if ($this->saveConfiguration($combinedOptions)) {
$this->ioStyle->success('Configuration set');
return self::CONFIG_SET_SUCCESSFUL;
}
return self::CONFIG_SET_FAILED;
}