private function renameNonRootModule(Module $module, $newName) { $previousInstallInfo = $module->getInstallInfo(); $installInfo = new InstallInfo($newName, $previousInstallInfo->getInstallPath()); $installInfo->setInstallerName($previousInstallInfo->getInstallerName()); foreach ($previousInstallInfo->getDisabledBindingUuids() as $uuid) { $installInfo->addDisabledBindingUuid($uuid); } $this->rootModuleFile->removeInstallInfo($module->getName()); $this->rootModuleFile->addInstallInfo($installInfo); try { $this->moduleFileStorage->saveRootModuleFile($this->rootModuleFile); } catch (Exception $e) { $this->rootModuleFile->removeInstallInfo($newName); $this->rootModuleFile->addInstallInfo($previousInstallInfo); throw $e; } $this->modules->remove($module->getName()); $this->modules->add(new Module($module->getModuleFile(), $module->getInstallPath(), $installInfo, $module->getLoadErrors())); }
public function __construct(RootModuleFileManager $rootModuleFileManager, ModuleCollection $modules) { $this->rootModuleFileManager = $rootModuleFileManager; $this->modules = $modules; $this->rootModule = $modules->getRootModule(); }
/** * Creates a tag manager. * * @param ProjectContext $context * @param EditableDiscovery $discovery * @param ModuleCollection $modules * @param ModuleFileStorage $moduleFileStorage * @param LoggerInterface|null $logger */ public function __construct(ProjectContext $context, EditableDiscovery $discovery, ModuleCollection $modules, ModuleFileStorage $moduleFileStorage, LoggerInterface $logger = null) { $this->context = $context; $this->discovery = $discovery; $this->modules = $modules; $this->moduleFileStorage = $moduleFileStorage; $this->rootModule = $modules->getRootModule(); $this->rootModuleFile = $context->getRootModuleFile(); $this->logger = $logger ?: new NullLogger(); }
private function makeAbsolute($relativePath, Module $containingModule, ModuleCollection $modules) { // Reference to install path of other module if ('@' !== $relativePath[0] || false === ($pos = strpos($relativePath, ':'))) { return $containingModule->getInstallPath() . '/' . $relativePath; } $refModuleName = substr($relativePath, 1, $pos - 1); if (!$modules->contains($refModuleName)) { throw new NoSuchModuleException(sprintf('The module "%s" referenced in the resource path "%s" was not ' . 'found. Maybe the module is not installed?', $refModuleName, $relativePath)); } $refModule = $modules->get($refModuleName); return $refModule->getInstallPath() . '/' . substr($relativePath, $pos + 1); }
/** * Creates an override graph for the given modules. * * @param ModuleCollection $modules The modules to load. * * @return static The created override graph. */ public static function forModules(ModuleCollection $modules) { $graph = new static($modules->getModuleNames()); foreach ($modules as $module) { if (null === $module->getModuleFile()) { continue; } foreach ($module->getModuleFile()->getOverriddenModules() as $overriddenModule) { if ($graph->hasModuleName($overriddenModule)) { $graph->addEdge($overriddenModule, $module->getName()); } } } // Do we have a root module? if (null === $modules->getRootModule()) { return $graph; } // Make sure we have numeric, ascending keys here $moduleOrder = array_values($modules->getRootModule()->getModuleFile()->getOverrideOrder()); // Each module overrides the previous one in the list for ($i = 1, $l = count($moduleOrder); $i < $l; ++$i) { $overriddenModule = $moduleOrder[$i - 1]; $overridingModule = $moduleOrder[$i]; if ($graph->hasModuleName($overriddenModule)) { $graph->addEdge($overriddenModule, $overridingModule); } } return $graph; }
/** * Creates a repository manager. * * @param ProjectContext $context * @param EditableRepository $repo * @param ModuleCollection $modules * @param ModuleFileStorage $moduleFileStorage */ public function __construct(ProjectContext $context, EditableRepository $repo, ModuleCollection $modules, ModuleFileStorage $moduleFileStorage) { $this->context = $context; $this->dispatcher = $context->getEventDispatcher(); $this->repo = $repo; $this->config = $context->getConfig(); $this->rootDir = $context->getRootDirectory(); $this->rootModule = $modules->getRootModule(); $this->rootModuleFile = $context->getRootModuleFile(); $this->modules = $modules; $this->moduleFileStorage = $moduleFileStorage; }