32 private $filePermissions;
55 $this->filePermissions = $filePermissions;
64 public function getAvailableOptions()
68 $optionLists = $this->collector->collectOptionsLists();
70 foreach ($optionLists as $optionList) {
75 $currentValue = $this->deploymentConfig->get(
$option->getConfigPath());
76 if ($currentValue !==
null) {
93 $this->checkInstallationFilePermissions();
95 $options = $this->collector->collectOptionsLists();
101 $fileConfigStorage = [];
103 throw new \Exception(
106 .
'ConfigOption::createConfig should return an array of ConfigData instances' 110 if (isset($fileConfigStorage[
$config->getFileKey()])) {
111 $fileConfigStorage[
$config->getFileKey()] = array_replace_recursive(
112 $fileConfigStorage[
$config->getFileKey()],
118 $this->writer->saveConfig($fileConfigStorage,
$config->isOverrideWhenSave());
134 $options = $this->getAvailableOptions();
137 if ($inputOptions[
$option->getName()] !==
null) {
140 }
catch (\InvalidArgumentException $e) {
146 $options = $this->collector->collectOptionsLists();
161 private function checkInstallationFilePermissions()
163 $results = $this->filePermissions->getMissingWritablePathsForInstallation();
165 $errorMsg =
"Missing write permissions to the following paths:" . PHP_EOL . implode(PHP_EOL,
$results);
166 throw new \Exception($errorMsg);
__construct(ConfigOptionsListCollector $collector, Writer $writer, DeploymentConfig $deploymentConfig, FilePermissions $filePermissions)
validate(array $inputOptions)