Puli\Manager\Module\ModuleManagerImpl::removeModules PHP Method

removeModules() public method

public removeModules ( Webmozart\Expression\Expression $expr )
$expr Webmozart\Expression\Expression
    public function removeModules(Expression $expr)
    {
        $this->assertModulesLoaded();
        $installInfos = $this->rootModuleFile->getInstallInfos();
        $modules = $this->modules->toArray();
        foreach ($this->modules->getInstalledModules() as $module) {
            if ($expr->evaluate($module)) {
                $this->rootModuleFile->removeInstallInfo($module->getName());
                $this->modules->remove($module->getName());
            }
        }
        if (!$installInfos) {
            return;
        }
        try {
            $this->jsonStorage->saveRootModuleFile($this->rootModuleFile);
        } catch (Exception $e) {
            $this->rootModuleFile->setInstallInfos($installInfos);
            $this->modules->replace($modules);
            throw $e;
        }
    }