addArgument('extensions', InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'Extension name', null); } /** * @throws FileSystemException */ public function handle(): int { $extensions = $this->input->getArgument('extensions') ?: []; $style = new SymfonyStyle($this->input, $this->output); $style->writeln($extensions ? 'Available extensions:' : 'Extensions:'); $data = []; foreach (Config::getExts() as $extension => $details) { if ($extensions !== [] && !\in_array($extension, $extensions, true)) { continue; } try { [, $libraries, $not_included] = DependencyUtil::getExtLibsByDeps([$extension]); } catch (WrongUsageException) { $libraries = $not_included = []; } $lib_suggests = Config::getExt($extension, 'lib-suggests', []); $ext_suggests = Config::getExt($extension, 'ext-suggests', []); $data[] = [ $extension, implode(', ', $libraries), implode(', ', $lib_suggests), implode(',', $not_included), implode(', ', $ext_suggests), Config::getExt($extension, 'unix-only', false) ? 'true' : 'false', ]; } if ($data === []) { $style->warning('Unknown extension selected: ' . implode(',', $extensions)); } else { $style->table( ['Extension', 'lib-depends', 'lib-suggests', 'ext-depends', 'ext-suggests', 'unix-only'], $data ); } return static::SUCCESS; } }