objectManagerProvider = $objectManagerProvider; parent::__construct(); } /** * {@inheritdoc} */ protected function configure() { $this->setName('module:status') ->setDescription('Displays status of modules') ->addArgument('module', InputArgument::OPTIONAL, 'Optional module name') ->addOption('enabled', null, null, 'Print only enabled modules') ->addOption('disabled', null, null, 'Print only disabled modules'); parent::configure(); } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $moduleName = (string)$input->getArgument('module'); if ($moduleName) { return $this->showSpecificModule($moduleName, $output); } $onlyEnabled = $input->getOption('enabled'); if ($onlyEnabled) { return $this->showEnabledModules($output); } $onlyDisabled = $input->getOption('disabled'); if ($onlyDisabled) { return $this->showDisabledModules($output); } $output->writeln('List of enabled modules:'); $this->showEnabledModules($output); $output->writeln(''); $output->writeln("List of disabled modules:"); $this->showDisabledModules($output); $output->writeln(''); } /** * @param string $moduleName * @param OutputInterface $output */ private function showSpecificModule(string $moduleName, OutputInterface $output) { $allModules = $this->getAllModules(); if (!in_array($moduleName, $allModules->getNames())) { $output->writeln('Module does not exist'); return Cli::RETURN_FAILURE; } $enabledModules = $this->getEnabledModules(); if (in_array($moduleName, $enabledModules->getNames())) { $output->writeln('Module is enabled'); return Cli::RETURN_FAILURE; } $output->writeln('Module is disabled'); return \Magento\Framework\Console\Cli::RETURN_SUCCESS; } /** * @param OutputInterface $output */ private function showEnabledModules(OutputInterface $output) { $enabledModules = $this->getEnabledModules(); $enabledModuleNames = $enabledModules->getNames(); if (count($enabledModuleNames) === 0) { $output->writeln('None'); return Cli::RETURN_FAILURE; } $output->writeln(join("\n", $enabledModuleNames)); return \Magento\Framework\Console\Cli::RETURN_SUCCESS; } /** * @param OutputInterface $output */ private function showDisabledModules(OutputInterface $output) { $disabledModuleNames = $this->getDisabledModuleNames(); if (count($disabledModuleNames) === 0) { $output->writeln('None'); return Cli::RETURN_FAILURE; } $output->writeln(join("\n", $disabledModuleNames)); return \Magento\Framework\Console\Cli::RETURN_SUCCESS; } /** * @return FullModuleList */ private function getAllModules(): FullModuleList { return $this->objectManagerProvider->get()->create(FullModuleList::class); } /** * @return ModuleList */ private function getEnabledModules(): ModuleList { return $this->objectManagerProvider->get()->create(ModuleList::class); } /** * @return array */ private function getDisabledModuleNames(): array { $fullModuleList = $this->getAllModules(); $enabledModules = $this->getEnabledModules(); return array_diff($fullModuleList->getNames(), $enabledModules->getNames()); } }