- $input = $command->getDefinition();
- $options = $input->getOptions();
- foreach ($options as $key => $option) {
- $defaultOption = sprintf(
- 'application.default.commands.%s.options.%s',
- str_replace(':', '.', $command->getName()),
- $key
- );
- $defaultValue = $configuration->get($defaultOption);
- if ($defaultValue) {
- $option->setDefault($defaultValue);
+ $inputDefinition = $command->getDefinition();
+ $input = $event->getInput();
+ $commandConfigKey = sprintf(
+ 'application.commands.defaults.%s',
+ str_replace(':', '.', $command->getName())
+ );
+ $defaults = $configuration->get($commandConfigKey);
+
+ $this->setOptions($defaults, $input, $inputDefinition);
+ $this->setArguments($defaults, $input, $inputDefinition);
+ }
+
+ private function setOptions($defaults, $input, $inputDefinition)
+ {
+ $defaultOptions = $this->extractKey($defaults, 'options');
+ $defaultValues = [];
+ if ($defaultOptions) {
+ $reflection = new \ReflectionObject($input);
+ $prop = $reflection->getProperty('tokens');
+ $prop->setAccessible(true);
+ $tokens = $prop->getValue($input);
+ foreach ($defaultOptions as $key => $defaultValue) {
+ $option = $inputDefinition->getOption($key);
+ if ($input->getOption($key)) {
+ continue;
+ }
+ if ($option->acceptValue()) {
+ $defaultValues[] = sprintf(
+ '--%s=%s',
+ $key,
+ $defaultValue
+ );
+ continue;
+ }
+ $defaultValues[] = sprintf(
+ '--%s',
+ $key
+ );