コード例 #1
0
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     /* Get Option vendor */
     $inputVendor = $input->getOption('vendor');
     if ($inputVendor) {
         $preg = '/' . $inputVendor . '_(.*)/i';
         $listModules = array_flip(preg_grep($preg, $this->fullModuleList->getNames()));
     } else {
         $listModules = array_flip($this->fullModuleList->getNames());
     }
     /* Get Option enabled */
     $inputEnabled = $input->getOption('enabled');
     if ($inputEnabled) {
         if ($inputEnabled != 'n' && $inputEnabled != 'y') {
             $output->writeln("<error>--enabled only can be 'y' or 'n'</error>");
             die;
         }
     }
     $modules = $this->getModulesByCriteria($listModules, $inputEnabled);
     if (count($modules)) {
         $this->ouputHeader($output);
         $this->ouputResult($output, $modules);
     } else {
         $output->writeln('<error>Not exist modules with these criteria</error>');
     }
 }
コード例 #2
0
 /**
  * Check for dependencies to modules, return error messages
  *
  * @param string[] $modules
  * @return string[]
  */
 private function checkDependencies(array $modules)
 {
     $messages = [];
     $dependencies = $this->dependencyChecker->checkDependenciesWhenDisableModules($modules, $this->fullModuleList->getNames());
     foreach ($dependencies as $module => $dependingModules) {
         if (!empty($dependingModules)) {
             $messages[] = "<error>Cannot uninstall module '{$module}' because the following module(s) depend on it:</error>" . PHP_EOL . "\t<error>" . implode('</error>' . PHP_EOL . "\t<error>", array_keys($dependingModules)) . "</error>";
         }
     }
     return $messages;
 }
コード例 #3
0
 /**
  * Get full list of modules as an associative array
  *
  * @return array
  */
 private function getAllModules()
 {
     $modules = [];
     $allModules = $this->fullModuleList->getNames();
     foreach ($allModules as $module) {
         $moduleName = $this->packageInfo->getPackageName($module);
         $modules[$moduleName]['name'] = $moduleName;
         $modules[$moduleName]['type'] = \Magento\Framework\Composer\ComposerInformation::MODULE_PACKAGE_TYPE;
         $modules[$moduleName]['version'] = $this->packageInfo->getVersion($module);
     }
     return $modules;
 }
コード例 #4
0
 /**
  * Auto discover ConfigOptionsList class and collect them.
  * These classes should reside in <module>/Setup directories.
  *
  * @return \Magento\Framework\Setup\ConfigOptionsListInterface[]
  */
 public function collectOptionsLists()
 {
     $optionsList = [];
     // go through modules
     foreach ($this->fullModuleList->getNames() as $moduleName) {
         $optionsClassName = str_replace('_', '\\', $moduleName) . '\\Setup\\ConfigOptionsList';
         if (class_exists($optionsClassName)) {
             $optionsClass = $this->objectManagerProvider->get()->create($optionsClassName);
             if ($optionsClass instanceof ConfigOptionsListInterface) {
                 $optionsList[$moduleName] = $optionsClass;
             }
         }
     }
     // check Setup
     $setupOptionsClassName = 'Magento\\Setup\\Model\\ConfigOptionsList';
     if (class_exists($setupOptionsClassName)) {
         $setupOptionsClass = $this->serviceLocator->get($setupOptionsClassName);
         if ($setupOptionsClass instanceof ConfigOptionsListInterface) {
             $optionsList['setup'] = $setupOptionsClass;
         }
     }
     return $optionsList;
 }