private function loadInstallers(Module $module)
{
foreach (self::$builtinInstallers as $name => $installerData) {
$installer = $this->dataToInstaller($name, (object) $installerData);
$this->installerDescriptors[$name] = $installer;
}
$moduleFile = $module->getModuleFile();
if (null === $moduleFile) {
return;
}
$moduleName = $module->getName();
$installersData = $moduleFile->getExtraKey(self::INSTALLERS_KEY);
if (!$installersData) {
return;
}
$jsonValidator = new JsonValidator();
$errors = $jsonValidator->validate($installersData, __DIR__ . '/../../res/schema/installers-schema-1.0.json');
if (count($errors) > 0) {
throw new ValidationFailedException(sprintf("The extra key \"%s\" of module \"%s\" is invalid:\n%s", self::INSTALLERS_KEY, $moduleName, implode("\n", $errors)));
}
foreach ($installersData as $name => $installerData) {
$installer = $this->dataToInstaller($name, $installerData);
$this->installerDescriptors[$name] = $installer;
if ($module instanceof RootModule) {
$this->rootInstallerDescriptors[$name] = $installer;
}
}
}