10 use Symfony\Component\Console\Input\InputInterface;
11 use Symfony\Component\Console\Output\OutputInterface;
12 use Symfony\Component\Console\Input\InputOption;
41 self::INPUT_KEY_FORCE,
43 InputOption::VALUE_NONE,
44 'Bypass dependencies check' 49 InputOption::VALUE_NONE,
50 ($this->
isEnable() ?
'Enable' :
'Disable') .
' all modules' 67 protected function execute(InputInterface $input, OutputInterface
$output)
70 if ($input->getOption(self::INPUT_KEY_ALL)) {
72 $fullModulesList = $this->objectManager->get(\
Magento\Framework\
Module\FullModuleList::class);
73 $modules = $fullModulesList->getNames();
75 $modules = $input->getArgument(self::INPUT_KEY_MODULES);
77 $messages = $this->
validate($modules);
78 if (!empty($messages)) {
79 $output->writeln(implode(PHP_EOL, $messages));
84 $modulesToChange = $this->getStatus()->getModulesToChange($isEnable, $modules);
85 }
catch (\LogicException $e) {
86 $output->writeln(
'<error>' . $e->getMessage() .
'</error>');
90 if (!empty($modulesToChange)) {
91 $force = $input->getOption(self::INPUT_KEY_FORCE);
93 $constraints = $this->getStatus()->checkConstraints($isEnable, $modulesToChange);
96 "<error>Unable to change status of modules because of the following constraints:</error>" 98 $output->writeln(
'<error>' . implode(
"</error>\n<error>", $constraints) .
'</error>');
103 $this->setIsEnabled($isEnable, $modulesToChange,
$output);
105 $this->getGeneratedFiles()->requestRegeneration();
108 '<error>Alert: You used the --force option.' 109 .
' As a result, modules might not function properly.</error>' 113 $output->writeln(
'<info>No modules were changed.</info>');
126 private function setIsEnabled($isEnable, $modulesToChange,
$output)
128 $this->getStatus()->setIsEnabled($isEnable, $modulesToChange);
130 $output->writeln(
'<info>The following modules have been enabled:</info>');
131 $output->writeln(
'<info>- ' . implode(
"\n- ", $modulesToChange) .
'</info>');
133 if ($this->getDeploymentConfig()->isAvailable()) {
135 '<info>To make sure that the enabled modules are properly registered,' 136 .
" run 'setup:upgrade'.</info>" 140 $output->writeln(
'<info>The following modules have been disabled:</info>');
141 $output->writeln(
'<info>- ' . implode(
"\n- ", $modulesToChange) .
'</info>');
151 private function getStatus()
153 return $this->objectManager->get(Status::class);
165 if (empty($modules)) {
166 $messages[] =
'<error>No modules specified. Specify a space-separated list of modules' .
167 ' or use the --all option</error>';
177 abstract protected function isEnable();
185 private function getDeploymentConfig()
188 return $this->objectManager->get(DeploymentConfig::class);
199 private function getGeneratedFiles()
201 if (!($this->generatedFiles instanceof GeneratedFiles)) {
202 return $this->objectManager->get(GeneratedFiles::class);
cleanup($repo, $mainline)