settings = $settings;
$this->logger = $logger;
$this->translator = $translator;
$this->extmgr = $extmgr;
parent::__construct();
}
protected function configure()
{
$this->setName('ext:configure')
->setDescription('Configure extension')
->setHelp('Enables and disables an extensions.')
->addOption('name', '', InputOption::VALUE_REQUIRED, 'Name of extension.', null)
->addOption('enable', '', InputOption::VALUE_NONE, 'Enable extension.')
->addOption('disable', '', InputOption::VALUE_NONE, 'Disable extension.')
;
}
protected function execute(InputInterface $input, OutputInterface $output) : int
{
$settings = $this->settings;
$logger = $this->logger;
$translator = $this->translator;
$extmgr = $this->extmgr;
$output->writeln("Using configuration from '".$settings->_configFilePath."'.", OutputInterface::VERBOSITY_VERBOSE);
if (!is_writable($settings->_configFilePath)) {
$output->writeln(sprintf("The configuration file '%s' is not writable by the system user running this script.", $settings->_configFilePath));
return Command::FAILURE;
}
$extconf = $extmgr->getExtensionConfiguration();
$extname = $input->getOption('name');
if (!isset($extconf[$extname])) {
$output->writeln(sprintf("No such extension '%s'", $extname));
return Command::FAILURE;
}
if ($input->getOption('enable')) {
if ($settings->extensionIsDisabled($extname)) {
$settings->enableExtension($extname);
} else {
$output->writeln(sprintf("Extension already enabled."));
return Command::SUCCESS;
}
} elseif ($input->getOption('disable')) {
if (!$settings->extensionIsDisabled($extname)) {
$settings->disableExtension($extname);
} else {
$output->writeln(sprintf("Extension already disabled."));
return Command::SUCCESS;
}
} else {
$output->writeln(sprintf("Missing option --enable or --disable"));
return Command::FAILURE;
}
$settings->save();
return Command::SUCCESS;
}
}
// vim: ts=4 sw=4 expandtab