setName('config:set-atomic') ->setDescription("Sets a configuration option's value only if the old matches the current value.") ->addArgument( 'key', InputArgument::REQUIRED, "The configuration option's name" ) ->addArgument( 'old', InputArgument::REQUIRED, 'Current configuration value, use 0 and 1 to specify boolean values' ) ->addArgument( 'new', InputArgument::REQUIRED, 'New configuration value, use 0 and 1 to specify boolean values' ) ->addOption( 'dynamic', 'd', InputOption::VALUE_NONE, 'Set this option if the configuration option changes too frequently to be efficiently cached.' ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $key = $input->getArgument('key'); $old_value = $input->getArgument('old'); $new_value = $input->getArgument('new'); $use_cache = !$input->getOption('dynamic'); if ($this->config->set_atomic($key, $old_value, $new_value, $use_cache)) { $output->writeln("Successfully set config $key"); return 0; } else { $output->writeln("Could not set config $key"); return 1; } } }