injectableFactory = $injectableFactory; $this->fileManager = $fileManager; } public function run(Params $params, IO $io): void { $fileList = $this->fileManager->getFileList('application/Espo/Classes/AppInfo'); $typeList = array_map( function ($item) { return lcfirst(substr($item, 0, -4)); }, $fileList ); foreach ($typeList as $type) { if ($params->hasFlag($type)) { $this->processType($io, $type, $params); return; } } if (count($params->getFlagList()) === 0) { $io->writeLine("No flag specified."); $io->writeLine(""); $io->writeLine("Available flags:"); $io->writeLine(" --container"); $io->writeLine(" --binding"); return; } $io->writeLine("Not supported flag specified."); } protected function processType(IO $io, string $type, Params $params): void { $className = 'Espo\\Classes\\AppInfo\\' . ucfirst($type); $obj = $this->injectableFactory->create($className); $result = $obj->process($params); if ($result) { $io->write($result); } } }