configurationManager = $configurationManager;
$this->site = $site;
$this->httpClient = $httpClient;
parent::__construct();
}
protected function configure()
{
$this
->setName('module:debug')
->setDescription($this->trans('commands.module.debug.description'))
->addArgument(
'module',
InputArgument::OPTIONAL | InputArgument::IS_ARRAY,
$this->trans('commands.module.debug.module')
)
->addOption(
'status',
null,
InputOption::VALUE_OPTIONAL,
$this->trans('commands.module.debug.options.status')
)
->addOption(
'type',
null,
InputOption::VALUE_OPTIONAL,
$this->trans('commands.module.debug.options.type')
);
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$io = new DrupalStyle($input, $output);
$this->site->loadLegacyFile('/core/modules/system/system.module');
$status = strtolower($input->getOption('status'));
$type = strtolower($input->getOption('type'));
$modules = strtolower($input->getArgument('module'));
if ($modules) {
$config = $this->configurationManager->getConfiguration();
$repo = $config->get('application.composer.repositories.default');
foreach ($modules as $module) {
$url = sprintf(
'%s/packages/drupal/%s.json',
$config->get('application.composer.packages.default'),
$module
);
try {
$data = $this->httpClient->getUrlAsJson($repo . $url);
} catch (\Exception $e) {
$io->error(
sprintf(
$this->trans('commands.module.debug.messages.no-results'),
$module
)
);
return 1;
}
$tableHeader = [
''.$data->package->name.''
];
$tableRows = [];
$tableRows[] = [
$data->package->description
];
$tableRows[] = [
''.$this->trans('commands.module.debug.messages.total-downloads').'',
$data->package->downloads->total
];
$tableRows[] = [
''.$this->trans('commands.module.debug.messages.total-monthly').'',
$data->package->downloads->monthly
];
$tableRows[] = [
''.$this->trans('commands.module.debug.messages.total-daily').'',
$data->package->downloads->daily
];
$io->table($tableHeader, $tableRows, 'compact');
}
return 0;
}
if ($status == 'installed') {
$status = 1;
} elseif ($status == 'uninstalled') {
$status = 0;
} else {
$status = -1;
}
if ($type == 'core') {
$type = 'core';
} elseif ($type == 'no-core') {
$type = '';
} else {
$type = null;
}
$tableHeader = [
$this->trans('commands.module.debug.messages.id'),
$this->trans('commands.module.debug.messages.name'),
$this->trans('commands.module.debug.messages.package'),
$this->trans('commands.module.debug.messages.version'),
$this->trans('commands.module.debug.messages.schema-version'),
$this->trans('commands.module.debug.messages.status'),
$this->trans('commands.module.debug.messages.origin'),
];
$tableRows = [];
$modules = system_rebuild_module_data();
foreach ($modules as $module_id => $module) {
if ($status >= 0 && $status != $module->status) {
continue;
}
if ($type !== null && $type !== $module->origin) {
continue;
}
$module_status = ($module->status) ? $this->trans('commands.module.debug.messages.installed') : $this->trans('commands.module.debug.messages.uninstalled');
$module_origin = ($module->origin) ? $module->origin : 'no core';
$schema_version = (drupal_get_installed_schema_version($module_id)!= -1?drupal_get_installed_schema_version($module_id): '');
$tableRows [] = [
$module_id,
$module->info['name'],
$module->info['package'],
$module->info['version'],
$schema_version,
$module_status,
$module_origin,
];
}
$io->table($tableHeader, $tableRows, 'compact');
}
}