Example #1
0
 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();
 }
Example #4
0
 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);
 }
Example #5
0
 /**
  * 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;
 }