/**
  * Action for enabling or disabling modules
  *
  * @return void
  * @throws \Magento\Setup\Exception
  */
 public function moduleAction()
 {
     /** @var \Zend\Console\Request $request */
     $request = $this->getRequest();
     $isEnable = $request->getParam(0) == self::CMD_MODULE_ENABLE;
     $modules = explode(',', $request->getParam('modules'));
     /** @var \Magento\Framework\Module\Status $status */
     $status = $this->objectManagerProvider->get()->create('Magento\\Framework\\Module\\Status');
     $modulesToChange = $status->getModulesToChange($isEnable, $modules);
     $message = '';
     if (!empty($modulesToChange)) {
         if (!$request->getParam('force')) {
             $constraints = $status->checkConstraints($isEnable, $modulesToChange);
             if ($constraints) {
                 $message .= "Unable to change status of modules because of the following constraints:\n" . implode("\n", $constraints);
                 throw new \Magento\Setup\Exception($message);
             }
         } else {
             $message .= 'Alert: Your store may not operate properly because of ' . "dependencies and conflicts of this module(s).\n";
         }
         $status->setIsEnabled($isEnable, $modulesToChange);
         $updateAfterEnableMessage = '';
         if ($isEnable) {
             $message .= 'The following modules have been enabled:';
             $updateAfterEnableMessage = "\nTo make sure that the enabled modules are properly registered," . " run 'update' command.";
         } else {
             $message .= 'The following modules have been disabled:';
         }
         $message .= ' ' . implode(', ', $modulesToChange) . $updateAfterEnableMessage;
     } else {
         $message .= 'There have been no changes to any modules.';
     }
     $this->log->log($message);
 }
 /**
  * @param string $command
  * @param string $modules
  * @param bool $isForce
  * @param bool $expectedIsEnabled
  * @param string[] $modulesToChange
  * @dataProvider moduleActionPartialNoChangesDataProvider
  */
 public function testModuleActionPartialNoChanges($command, $modules, $isForce, $expectedIsEnabled, $modulesToChange)
 {
     $status = $this->getModuleActionMocks($command, $modules, $isForce, false);
     $status->expects($this->once())->method('getModulesToChange')->willReturn($modulesToChange);
     if (!$isForce) {
         $status->expects($this->once())->method('checkConstraints')->willReturn([]);
     }
     $status->expects($this->once())->method('setIsEnabled')->with($expectedIsEnabled, $modulesToChange);
     $this->consoleLogger->expects($this->once())->method('log');
     $this->controller->moduleAction();
 }
 /**
  * Action for "maintenance" command
  *
  * @return void
  */
 public function maintenanceAction()
 {
     /** @var \Zend\Console\Request $request */
     $request = $this->getRequest();
     $set = $request->getParam('set');
     $addresses = $request->getParam('addresses');
     if (null !== $set) {
         if (1 == $set) {
             $this->log->log('Enabling maintenance mode...');
             $this->maintenanceMode->set(true);
         } else {
             $this->log->log('Disabling maintenance mode...');
             $this->maintenanceMode->set(false);
         }
     }
     if (null !== $addresses) {
         $addresses = 'none' == $addresses ? '' : $addresses;
         $this->maintenanceMode->setAddresses($addresses);
     }
     $this->log->log('Status: maintenance mode is ' . ($this->maintenanceMode->isOn() ? 'active' : 'not active'));
     $addresses = implode(', ', $this->maintenanceMode->getAddressInfo());
     $this->log->log('List of exempt IP-addresses: ' . ($addresses ? $addresses : 'none'));
 }