From ac6097107d909fbb36cc1c0745622fd22df6a21d Mon Sep 17 00:00:00 2001 From: Robin Wieschendorf Date: Tue, 20 Jun 2023 16:01:51 +0200 Subject: [PATCH] feat: change code for di --- src/Classes/Archive.php | 2 +- .../DependencyManager/DependencyBuilder.php | 35 ++++-- .../DependencyManager/DependencyManager.php | 56 +++++++--- .../DependencyManager/ModuleTreeBuilder.php | 25 ++++- .../DependencyManager/SystemSetFactory.php | 22 +++- src/Classes/IndexController.php | 89 ++++++++------- src/Classes/Loader/LocalModuleLoader.php | 39 ++++--- src/Classes/Loader/ModuleLoader.php | 103 ++++++++++-------- src/Classes/Loader/RemoteModuleLoader.php | 32 +++--- src/Classes/Module.php | 19 ++-- src/Classes/ModuleFilter.php | 62 +++++++---- src/Classes/ModuleInstaller.php | 60 +++++++--- .../DependencyBuilderTest.php | 10 +- tests/unit/ModuleLoaderTest.php | 5 +- tests/unit/RemoteModuleLoaderTest.php | 15 ++- 15 files changed, 355 insertions(+), 219 deletions(-) diff --git a/src/Classes/Archive.php b/src/Classes/Archive.php index 42f9918d..ffc04d48 100644 --- a/src/Classes/Archive.php +++ b/src/Classes/Archive.php @@ -83,7 +83,7 @@ public function getVendorName(): string public function tarArchive(): bool { - $localModuleLoader = new LocalModuleLoader(); + $localModuleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $module = $localModuleLoader->loadByArchiveNameAndVersion($this->getArchiveName(), $this->getVersion()); if (!$module) { diff --git a/src/Classes/DependencyManager/DependencyBuilder.php b/src/Classes/DependencyManager/DependencyBuilder.php index 38412be2..bdd2f01a 100644 --- a/src/Classes/DependencyManager/DependencyBuilder.php +++ b/src/Classes/DependencyManager/DependencyBuilder.php @@ -15,10 +15,31 @@ use RobinTheHood\ModifiedModuleLoaderClient\Config; use RobinTheHood\ModifiedModuleLoaderClient\Loader\ModuleLoader; use RobinTheHood\ModifiedModuleLoaderClient\Module; +use RobinTheHood\ModifiedModuleLoaderClient\Semver\Comparator; use RobinTheHood\ModifiedModuleLoaderClient\Semver\Constraint; class DependencyBuilder { + /** @var ModuleTreeBuilder*/ + private $moduleTreeBuilder; + + /** @var ModuleLoader*/ + private $moduleLoader; + + public static function create(int $mode): DependencyBuilder + { + $moduleTreeBuilder = ModuleTreeBuilder::create($mode); + $moduleLoader = ModuleLoader::create($mode); + $dependencyBuilder = new DependencyBuilder($moduleTreeBuilder, $moduleLoader); + return $dependencyBuilder; + } + + public function __construct(ModuleTreeBuilder $moduleTreeBuilder, ModuleLoader $moduleLoader) + { + $this->moduleTreeBuilder = $moduleTreeBuilder; + $this->moduleLoader = $moduleLoader; + } + private function logFile($value, $file) { if (!Config::getLogging()) { @@ -41,7 +62,7 @@ public function log($var) public function test() { - $moduleLoader = ModuleLoader::getModuleLoader(); + $moduleLoader = ModuleLoader::create(Comparator::CARET_MODE_STRICT); $module = $moduleLoader->loadLatestVersionByArchiveName('firstweb/multi-order'); if (!$module) { @@ -74,8 +95,7 @@ public function test() public function satisfiesContraints1(Module $module, SystemSet $systemSet): CombinationSatisfyerResult { - $moduleTreeBuilder = new ModuleTreeBuilder(); - $moduleTrees = $moduleTreeBuilder->buildListByConstraints($module); + $moduleTrees = $this->moduleTreeBuilder->buildListByConstraints($module); $this->logFile($moduleTrees, '1-moduleTrees.json'); $flatEntryBuilder = new FlatEntryBuilder(); @@ -104,8 +124,7 @@ public function satisfiesContraints2( string $constraint, SystemSet $systemSet ): CombinationSatisfyerResult { - $moduleTreeBuilder = new ModuleTreeBuilder(); - $moduleTree = $moduleTreeBuilder->buildByConstraints($archiveName, $constraint); + $moduleTree = $this->moduleTreeBuilder->buildByConstraints($archiveName, $constraint); $this->logFile($moduleTree, '2-moduleTrees.json'); $flatEntryBuilder = new FlatEntryBuilder(); @@ -133,8 +152,7 @@ public function satisfies(string $archiveName, string $constraint, SystemSet $sy $systemSet->remove($archiveName); $constraint = $this->createConstraint($archiveName, $constraint, $systemSet); - $moduleTreeBuilder = new ModuleTreeBuilder(); - $moduleTree = $moduleTreeBuilder->buildByConstraints($archiveName, $constraint); + $moduleTree = $this->moduleTreeBuilder->buildByConstraints($archiveName, $constraint); $this->logFile($moduleTree, '3-moduleTrees.json'); $flatEntryBuilder = new FlatEntryBuilder(); @@ -184,8 +202,7 @@ private function createConstraint(string $archiveName, string $constraint, Syste private function getModuleByArchiveNameAndVersion(string $archiveName, string $version): ?Module { - $moduleLoader = ModuleLoader::getModuleLoader(); - return $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); + return $this->moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); } private function getRequiredConstraint(Module $installedModule, string $archiveName): string diff --git a/src/Classes/DependencyManager/DependencyManager.php b/src/Classes/DependencyManager/DependencyManager.php index 7de0b174..a6990760 100644 --- a/src/Classes/DependencyManager/DependencyManager.php +++ b/src/Classes/DependencyManager/DependencyManager.php @@ -13,26 +13,56 @@ namespace RobinTheHood\ModifiedModuleLoaderClient\DependencyManager; +use RobinTheHood\ModifiedModuleLoaderClient\Config; use RobinTheHood\ModifiedModuleLoaderClient\DependencyManager\Combination; use RobinTheHood\ModifiedModuleLoaderClient\DependencyManager\CombinationSatisfyerResult; use RobinTheHood\ModifiedModuleLoaderClient\DependencyManager\DependencyBuilder; use RobinTheHood\ModifiedModuleLoaderClient\DependencyManager\SystemSetFactory; -use RobinTheHood\ModifiedModuleLoaderClient\Loader\LocalModuleLoader; use RobinTheHood\ModifiedModuleLoaderClient\Module; use RobinTheHood\ModifiedModuleLoaderClient\Loader\ModuleLoader; use RobinTheHood\ModifiedModuleLoaderClient\Logger\LogLevel; use RobinTheHood\ModifiedModuleLoaderClient\Logger\StaticLogger; use RobinTheHood\ModifiedModuleLoaderClient\Semver\Comparator; -use RobinTheHood\ModifiedModuleLoaderClient\SemverComparatorFactory; class DependencyManager { + /** @var dependencyBuilder */ + private $dependencyBuilder; + /** @var Comparator */ - protected $comparator; + private $comparator; + + /** @var ModuleLoader */ + private $moduleLoader; + + /** @var SystemSetFactory */ + private $systemSetFactory; + + public static function create(int $mode): DependencyManager + { + $dependencyBuilder = DependencyBuilder::create($mode); + $comparator = Comparator::create($mode); + $moduleLoader = ModuleLoader::create($mode); + $systemSetFactory = SystemSetFactory::create($mode); + $dependencyManager = new DependencyManager($dependencyBuilder, $comparator, $moduleLoader, $systemSetFactory); + return $dependencyManager; + } - public function __construct() + public static function createFromConfig(): DependencyManager { - $this->comparator = SemverComparatorFactory::createComparator(); + return self::create(Config::getDependenyMode()); + } + + public function __construct( + DependencyBuilder $dependencyBuilder, + Comparator $comparator, + ModuleLoader $moduleLoader, + SystemSetFactory $systemSetFactory + ) { + $this->dependencyBuilder = $dependencyBuilder; + $this->comparator = $comparator; + $this->moduleLoader = $moduleLoader; + $this->systemSetFactory = $systemSetFactory; } /** @@ -64,12 +94,11 @@ public function getUsedByEntrys(Module $module, array $selectedModules): array */ public function getAllModulesFromCombination(Combination $combination): array { - $moduleLoader = ModuleLoader::getModuleLoader(); - $moduleLoader->resetCache(); + $this->moduleLoader->resetCache(); $modules = []; foreach ($combination->strip()->getAll() as $archiveName => $version) { - $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); + $module = $this->moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); if (!$module) { $message = "Can not find Module {$archiveName} in version {$version}"; StaticLogger::log(LogLevel::WARNING, $message); @@ -88,15 +117,13 @@ public function getAllModulesFromCombination(Combination $combination): array */ public function canBeInstalled(Module $module, array $doNotCheck = []): CombinationSatisfyerResult { - $systemSetFactory = new SystemSetFactory(); - $systemSet = $systemSetFactory->getSystemSet(); + $systemSet = $this->systemSetFactory->getSystemSet(); foreach ($doNotCheck as $name) { $systemSet->remove($name); } - $dependencyBuilder = new DependencyBuilder(); - $combinationSatisfyerResult = $dependencyBuilder->satisfies( + $combinationSatisfyerResult = $this->dependencyBuilder->satisfies( $module->getArchiveName(), $module->getVersion(), $systemSet @@ -148,13 +175,12 @@ private function canBeInstalledTestChanged(Module $module, array $modules): void */ public function getMissingDependencies(Module $module): array { - $moduleLoader = LocalModuleLoader::getModuleLoader(); - $moduleLoader->resetCache(); + $this->moduleLoader->resetCache(); $missing = []; foreach ($module->getRequire() as $archiveName => $version) { $found = false; - $depModules = $moduleLoader->loadAllVersionsByArchiveName($archiveName); + $depModules = $this->moduleLoader->loadAllVersionsByArchiveName($archiveName); foreach ($depModules as $depModule) { if (!$depModule->isInstalled()) { continue; diff --git a/src/Classes/DependencyManager/ModuleTreeBuilder.php b/src/Classes/DependencyManager/ModuleTreeBuilder.php index d13a771c..d6d55823 100644 --- a/src/Classes/DependencyManager/ModuleTreeBuilder.php +++ b/src/Classes/DependencyManager/ModuleTreeBuilder.php @@ -23,6 +23,26 @@ class ModuleTreeBuilder /** @var array */ private $moduleCache = []; + /** @var ModuleFilter */ + private $moduleFilter; + + /** @var ModuleLoader */ + private $moduleLoader; + + public static function create(int $mode): ModuleTreeBuilder + { + $moduleFilter = ModuleFilter::create($mode); + $moduleLoader = ModuleLoader::create($mode); + $moduleTreeBuilder = new ModuleTreeBuilder($moduleFilter, $moduleLoader); + return $moduleTreeBuilder; + } + + public function __construct(ModuleFilter $moduleFilter, ModuleLoader $moduleLoader) + { + $this->moduleFilter = $moduleFilter; + $this->moduleLoader = $moduleLoader; + } + /** * @param string $archiveName * @param string $versionConstraint @@ -32,13 +52,12 @@ private function loadAllByArchiveNameAndConstraint(string $archiveName, string $ { $modules = $this->moduleCache[$archiveName] ?? []; if (!$modules) { - $moduleLoader = ModuleLoader::getModuleLoader(); - $modules = $moduleLoader->loadAllVersionsByArchiveName($archiveName); + $modules = $this->moduleLoader->loadAllVersionsByArchiveName($archiveName); $modules = ModuleSorter::sortByVersion($modules); $this->moduleCache[$archiveName] = $modules; } - return ModuleFilter::filterByVersionConstrain($modules, $versionConstraint); + return $this->moduleFilter->filterByVersionConstrain($modules, $versionConstraint); } /** diff --git a/src/Classes/DependencyManager/SystemSetFactory.php b/src/Classes/DependencyManager/SystemSetFactory.php index 14e7b34f..1fc4803e 100644 --- a/src/Classes/DependencyManager/SystemSetFactory.php +++ b/src/Classes/DependencyManager/SystemSetFactory.php @@ -15,19 +15,33 @@ use RobinTheHood\ModifiedModuleLoaderClient\App; use RobinTheHood\ModifiedModuleLoaderClient\Loader\LocalModuleLoader; -use RobinTheHood\ModifiedModuleLoaderClient\ShopInfo as ModifiedModuleLoaderClientShopInfo; +use RobinTheHood\ModifiedModuleLoaderClient\ShopInfo; class SystemSetFactory { + /** @var LocalModuleLoader */ + private $localModuleLoader; + + public static function create(int $mode): SystemSetFactory + { + $localModuleLoader = LocalModuleLoader::create($mode); + $localModuleLoader = new SystemSetFactory($localModuleLoader); + return $localModuleLoader; + } + + public function __construct(LocalModuleLoader $localModuleLoader) + { + $this->localModuleLoader = $localModuleLoader; + } + public function getSystemSet(): SystemSet { $systemSet = new SystemSet(); - $systemSet->add('modified', ModifiedModuleLoaderClientShopInfo::getModifiedVersion()); + $systemSet->add('modified', ShopInfo::getModifiedVersion()); $systemSet->add('php', phpversion()); $systemSet->add('mmlc', App::getMmlcVersion()); - $moduleLoader = LocalModuleLoader::getModuleLoader(); - $modules = $moduleLoader->loadAllInstalledVersions(); + $modules = $this->localModuleLoader->loadAllInstalledVersions(); foreach ($modules as $module) { $systemSet->add($module->getArchiveName(), $module->getVersion()); } diff --git a/src/Classes/IndexController.php b/src/Classes/IndexController.php index 5a198143..c609caf0 100644 --- a/src/Classes/IndexController.php +++ b/src/Classes/IndexController.php @@ -13,6 +13,7 @@ namespace RobinTheHood\ModifiedModuleLoaderClient; +use Psr\Http\Message\ServerRequestInterface; use RobinTheHood\ModifiedModuleLoaderClient\Loader\ModuleLoader; use RobinTheHood\ModifiedModuleLoaderClient\Loader\LocalModuleLoader; use RobinTheHood\ModifiedModuleLoaderClient\Loader\RemoteModuleLoader; @@ -29,6 +30,20 @@ class IndexController extends Controller { private const REQUIRED_PHP_VERSION = '7.4.0'; + /** @var ModuleInstaller */ + private $moduleInstaller; + + /** @var ModuleFilter */ + private $moduleFilter; + + public function __construct(ServerRequestInterface $serverRequest, array $session = []) + { + parent::__construct($serverRequest, $session); + + $this->moduleInstaller = ModuleInstaller::createFromConfig(); + $this->moduleFilter = ModuleFilter::createFromConfig(); + } + public function invoke() { $this->invokeDefault(); @@ -174,9 +189,9 @@ public function invokeIndex() return $accessRedirect; } - $moduleLoader = ModuleLoader::getModuleLoader(); + $moduleLoader = ModuleLoader::create(Config::getDependenyMode()); $modules = $moduleLoader->loadAllVersionsWithLatestRemote(); - $modules = ModuleFilter::filterNewestOrInstalledVersion($modules); + $modules = $this->moduleFilter->filterNewestOrInstalledVersion($modules); $heading = 'Alle Module'; @@ -184,19 +199,19 @@ public function invokeIndex() $filterModules = $queryParams['filterModules'] ?? ''; if ($filterModules == 'loaded') { - $modules = ModuleFilter::filterLoaded($modules); + $modules = $this->moduleFilter->filterLoaded($modules); $heading = 'Geladene Module'; } elseif ($filterModules == 'installed') { - $modules = ModuleFilter::filterInstalled($modules); + $modules = $this->moduleFilter->filterInstalled($modules); $heading = 'Installierte Module'; } elseif ($filterModules == 'updatable') { - $modules = ModuleFilter::filterUpdatable($modules); + $modules = $this->moduleFilter->filterUpdatable($modules); $heading = 'Aktualisierbare Module'; } elseif ($filterModules == 'changed') { - $modules = ModuleFilter::filterRepairable($modules); + $modules = $this->moduleFilter->filterRepairable($modules); $heading = 'GeƤnderte Module'; } elseif ($filterModules == 'notloaded') { - $modules = ModuleFilter::filterNotLoaded($modules); + $modules = $this->moduleFilter->filterNotLoaded($modules); $heading = 'Nicht geladene Module'; } @@ -221,12 +236,12 @@ public function invokeModuleInfo() $version = $queryParams['version'] ?? ''; if ($version) { - $moduleLoader = ModuleLoader::getModuleLoader(); + $moduleLoader = ModuleLoader::create(Config::getDependenyMode()); $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); } else { - $moduleLoader = ModuleLoader::getModuleLoader(); + $moduleLoader = ModuleLoader::create(Config::getDependenyMode()); $modules = $moduleLoader->loadAllVersionsByArchiveNameWithLatestRemote($archiveName); - $module = ModuleFilter::getLatestVersion($modules); + $module = $this->moduleFilter->getLatestVersion($modules); } if (!$module) { @@ -242,7 +257,7 @@ public function invokeModuleInfo() ]); } - $dependencyManger = new DependencyManager(); + $dependencyManger = DependencyManager::createFromConfig(); $missingDependencies = $dependencyManger->getMissingDependencies($module); if ($missingDependencies) { $string = ''; @@ -275,7 +290,7 @@ public function invokeLazyModuleInfo() $version = $queryParams['version'] ?? ''; $data = $queryParams['data'] ?? ''; - $moduleLoader = ModuleLoader::getModuleLoader(); + $moduleLoader = ModuleLoader::create(Config::getDependenyMode()); $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); if ($data == 'installationMd') { @@ -335,7 +350,7 @@ public function invokeInstall() $archiveName = $queryParams['archiveName'] ?? ''; $version = $queryParams['version'] ?? ''; - $moduleLoader = new LocalModuleLoader(); + $moduleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); if (!$module) { @@ -344,8 +359,7 @@ public function invokeInstall() } try { - $moduleInstaller = new ModuleInstaller(); - $moduleInstaller->installWithDependencies($module); + $this->moduleInstaller->installWithDependencies($module); } catch (DependencyException $e) { Notification::pushFlashMessage([ 'text' => $e->getMessage(), @@ -371,7 +385,7 @@ private function invokeRevertChanges() $archiveName = $queryParams['archiveName'] ?? ''; $version = $queryParams['version'] ?? ''; - $moduleLoader = new LocalModuleLoader(); + $moduleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); if (!$module) { @@ -380,8 +394,7 @@ private function invokeRevertChanges() } try { - $moduleInstaller = new ModuleInstaller(); - $moduleInstaller->revertChanges($module); + $this->moduleInstaller->revertChanges($module); } catch (DependencyException $e) { Notification::pushFlashMessage([ 'text' => $e->getMessage(), @@ -407,7 +420,7 @@ public function invokeUninstall() $archiveName = $queryParams['archiveName'] ?? ''; $version = $queryParams['version'] ?? ''; - $moduleLoader = new LocalModuleLoader(); + $moduleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); if (!$module) { @@ -416,8 +429,7 @@ public function invokeUninstall() } try { - $moduleInstaller = new ModuleInstaller(); - $moduleInstaller->uninstall($module); + $this->moduleInstaller->uninstall($module); } catch (DependencyException $e) { Notification::pushFlashMessage([ 'text' => $e->getMessage(), @@ -443,7 +455,7 @@ public function invokeUpdate() $archiveName = $queryParams['archiveName'] ?? ''; $version = $queryParams['version'] ?? ''; - $moduleLoader = new LocalModuleLoader(); + $moduleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); if (!$module) { @@ -454,8 +466,7 @@ public function invokeUpdate() $newModule = $module; try { - $moduleInstaller = new ModuleInstaller(); - $newModule = $moduleInstaller->updateWithDependencies($module); + $newModule = $this->moduleInstaller->updateWithDependencies($module); } catch (DependencyException $e) { Notification::pushFlashMessage([ 'text' => $e->getMessage(), @@ -487,7 +498,7 @@ public function invokeLoadRemoteModule() $archiveName = $queryParams['archiveName'] ?? ''; $version = $queryParams['version'] ?? ''; - $moduleLoader = RemoteModuleLoader::getModuleLoader(); + $moduleLoader = RemoteModuleLoader::create(); $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); if (!$module) { @@ -495,8 +506,7 @@ public function invokeLoadRemoteModule() return $this->redirect('/'); } - $moduleInstaller = new ModuleInstaller(); - if (!$moduleInstaller->pull($module)) { + if (!$this->moduleInstaller->pull($module)) { Notification::pushFlashMessage([ 'text' => "Fehler: Das Module $archiveName - $version konnte nicht geladen werden.", 'type' => 'error' @@ -516,7 +526,7 @@ public function invokeLoadAndInstall() $archiveName = $queryParams['archiveName'] ?? ''; $version = $queryParams['version'] ?? ''; - $moduleLoader = RemoteModuleLoader::getModuleLoader(); + $moduleLoader = RemoteModuleLoader::create(); $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); if (!$module) { @@ -524,8 +534,7 @@ public function invokeLoadAndInstall() return $this->redirect('/'); } - $moduleInstaller = new ModuleInstaller(); - if (!$moduleInstaller->pull($module)) { + if (!$this->moduleInstaller->pull($module)) { Notification::pushFlashMessage([ 'text' => "Fehler: Das Module $archiveName - $version konnte nicht geladen werden.", 'type' => 'error' @@ -533,7 +542,7 @@ public function invokeLoadAndInstall() return $this->redirect('/'); } - $moduleLoader = new LocalModuleLoader(); + $moduleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); if (!$module) { @@ -542,8 +551,7 @@ public function invokeLoadAndInstall() } try { - $moduleInstaller = new ModuleInstaller(); - $moduleInstaller->installWithDependencies($module); + $this->moduleInstaller->installWithDependencies($module); } catch (DependencyException $e) { Notification::pushFlashMessage([ 'text' => $e->getMessage(), @@ -569,7 +577,7 @@ public function invokeUnloadLocalModule() $archiveName = $queryParams['archiveName'] ?? ''; $version = $queryParams['version'] ?? ''; - $moduleLoader = new LocalModuleLoader(); + $moduleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); if (!$module) { @@ -578,8 +586,7 @@ public function invokeUnloadLocalModule() } try { - $moduleInstaller = new ModuleInstaller(); - $moduleInstaller->delete($module); + $this->moduleInstaller->delete($module); } catch (DependencyException $e) { Notification::pushFlashMessage([ 'text' => $e->getMessage(), @@ -690,17 +697,17 @@ public function invokeSettings() public function calcModuleUpdateCount() { - $moduleLoader = LocalModuleLoader::getModuleLoader(); + $moduleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $modules = $moduleLoader->loadAllVersions(); - $modules = ModuleFilter::filterInstalled($modules); - return count(ModuleFilter::filterUpdatable($modules)); + $modules = $this->moduleFilter->filterInstalled($modules); + return count($this->moduleFilter->filterUpdatable($modules)); } public function calcModuleChangeCount() { - $moduleLoader = LocalModuleLoader::getModuleLoader(); + $moduleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $modules = $moduleLoader->loadAllVersions(); - return count(ModuleFilter::filterRepairable($modules)); + return count($this->moduleFilter->filterRepairable($modules)); } public function calcSystemUpdateCount() diff --git a/src/Classes/Loader/LocalModuleLoader.php b/src/Classes/Loader/LocalModuleLoader.php index 61605f88..724cbf11 100644 --- a/src/Classes/Loader/LocalModuleLoader.php +++ b/src/Classes/Loader/LocalModuleLoader.php @@ -21,15 +21,22 @@ class LocalModuleLoader { - private static $moduleLoader = null; - private $modules; + /** @var Module[] */ + private static $cachedModules = []; - public static function getModuleLoader(): LocalModuleLoader + /** @var ModuleFilter */ + private $moduleFilter; + + public static function create(int $mode): LocalModuleLoader { - if (!self::$moduleLoader) { - self::$moduleLoader = new LocalModuleLoader(); - } - return self::$moduleLoader; + $moduleFilter = ModuleFilter::create($mode); + $localModuleLoader = new LocalModuleLoader($moduleFilter); + return $localModuleLoader; + } + + public function __construct(ModuleFilter $moduleFilter) + { + $this->moduleFilter = $moduleFilter; } /** @@ -40,7 +47,7 @@ public static function getModuleLoader(): LocalModuleLoader */ public function resetCache() { - $this->modules = null; + self::$cachedModules = null; } /** @@ -50,8 +57,8 @@ public function resetCache() */ public function loadAllVersions(): array { - if (isset($this->modules)) { - return $this->modules; + if (self::$cachedModules) { + return self::$cachedModules; } $moduleDirs = $this->getModuleDirs(); @@ -66,8 +73,8 @@ public function loadAllVersions(): array } } - $this->modules = $modules; - return $this->modules; + self::$cachedModules = $modules; + return self::$cachedModules; } /** @@ -78,7 +85,7 @@ public function loadAllVersions(): array public function loadAllVersionsByArchiveName(string $archiveName): array { $modules = $this->loadAllVersions(); - $modules = ModuleFilter::filterByArchiveName($modules, $archiveName); + $modules = $this->moduleFilter->filterByArchiveName($modules, $archiveName); return $modules; } @@ -90,7 +97,7 @@ public function loadAllVersionsByArchiveName(string $archiveName): array public function loadByArchiveNameAndVersion(string $archiveName, string $version): ?Module { $modules = $this->loadAllVersions(); - $module = ModuleFilter::getByArchiveNameAndVersion($modules, $archiveName, $version); + $module = $this->moduleFilter->getByArchiveNameAndVersion($modules, $archiveName, $version); return $module; } @@ -102,7 +109,7 @@ public function loadByArchiveNameAndVersion(string $archiveName, string $version public function loadLatestVersionByArchiveName(string $archiveName): ?Module { $modules = $this->loadAllVersionsByArchiveName($archiveName); - $module = ModuleFilter::getLatestVersion($modules); + $module = $this->moduleFilter->getLatestVersion($modules); return $module; } @@ -114,7 +121,7 @@ public function loadLatestVersionByArchiveName(string $archiveName): ?Module public function loadAllInstalledVersions(): array { $modules = $this->loadAllVersions(); - $installedModules = ModuleFilter::filterInstalled($modules); + $installedModules = $this->moduleFilter->filterInstalled($modules); return $installedModules; } diff --git a/src/Classes/Loader/ModuleLoader.php b/src/Classes/Loader/ModuleLoader.php index 27ff4814..6bdcb540 100644 --- a/src/Classes/Loader/ModuleLoader.php +++ b/src/Classes/Loader/ModuleLoader.php @@ -13,20 +13,46 @@ namespace RobinTheHood\ModifiedModuleLoaderClient\Loader; +use RobinTheHood\ModifiedModuleLoaderClient\Config; use RobinTheHood\ModifiedModuleLoaderClient\Module; use RobinTheHood\ModifiedModuleLoaderClient\ModuleFilter; class ModuleLoader { - private static $moduleLoader = null; - private $cachedModules; + /** @var Module[] */ + private static $cachedModules = []; - public static function getModuleLoader(): ModuleLoader + /** @var LocalModuleLoader */ + private $localModuleLoader; + + /** @var RemoteModuleLoader */ + private $remoteModuleLoader; + + /** @var ModuleFilter */ + private $moduleFilter; + + public static function create(int $mode): ModuleLoader { - if (!self::$moduleLoader) { - self::$moduleLoader = new ModuleLoader(); - } - return self::$moduleLoader; + $moduleFilter = ModuleFilter::create($mode); + $localModuleLoader = LocalModuleLoader::create($mode); + $remoteModuleLoader = RemoteModuleLoader::create(); + $moduleLoader = new ModuleLoader($localModuleLoader, $remoteModuleLoader, $moduleFilter); + return $moduleLoader; + } + + public static function createFromConfig(): ModuleLoader + { + return self::create(Config::getDependenyMode()); + } + + public function __construct( + LocalModuleLoader $localModuleLoader, + RemoteModuleLoader $remoteModuleLoader, + ModuleFilter $moduleFilter + ) { + $this->localModuleLoader = $localModuleLoader; + $this->remoteModuleLoader = $remoteModuleLoader; + $this->moduleFilter = $moduleFilter; } /** @@ -37,13 +63,9 @@ public static function getModuleLoader(): ModuleLoader */ public function resetCache() { - $this->cachedModules = null; - - $localModuleLoader = LocalModuleLoader::getModuleLoader(); - $localModuleLoader->resetCache(); - - $remoteModuleLoader = RemoteModuleLoader::getModuleLoader(); - $remoteModuleLoader->resetCache(); + self::$cachedModules = []; + $this->localModuleLoader->resetCache(); + $this->remoteModuleLoader->resetCache(); } /** @@ -53,21 +75,18 @@ public function resetCache() */ public function loadAllVersionsWithLatestRemote(): array { - if (isset($this->cachedModules)) { - return $this->cachedModules; + if (self::$cachedModules) { + return self::$cachedModules; } - $remoteModuleLoader = RemoteModuleLoader::getModuleLoader(); - $remoteModules = $remoteModuleLoader->loadAllLatestVersions(); - - $localModuleLoader = LocalModuleLoader::getModuleLoader(); - $localModules = $localModuleLoader->loadAllVersions(); + $remoteModules = $this->remoteModuleLoader->loadAllLatestVersions(); + $localModules = $this->localModuleLoader->loadAllVersions(); $modules = array_merge($localModules, $remoteModules); - $modules = ModuleFilter::filterValid($modules); - $this->cachedModules = $modules; + $modules = $this->moduleFilter->filterValid($modules); + self::$cachedModules = $modules; - return $this->cachedModules; + return self::$cachedModules; } /** @@ -77,14 +96,11 @@ public function loadAllVersionsWithLatestRemote(): array */ public function loadAllVersionsByArchiveName(string $archiveName): array { - $remoteModuleLoader = RemoteModuleLoader::getModuleLoader(); - $remoteModules = $remoteModuleLoader->loadAllVersionsByArchiveName($archiveName); - - $localModuleLoader = LocalModuleLoader::getModuleLoader(); - $localModules = $localModuleLoader->loadAllVersionsByArchiveName($archiveName); + $remoteModules = $this->remoteModuleLoader->loadAllVersionsByArchiveName($archiveName); + $localModules = $this->localModuleLoader->loadAllVersionsByArchiveName($archiveName); $modules = array_merge($localModules, $remoteModules); - $modules = ModuleFilter::filterValid($modules); + $modules = $this->moduleFilter->filterValid($modules); return $modules; } @@ -96,18 +112,15 @@ public function loadAllVersionsByArchiveName(string $archiveName): array */ public function loadAllVersionsByArchiveNameWithLatestRemote(string $archiveName): array { - $remoteModuleLoader = RemoteModuleLoader::getModuleLoader(); - $remoteModule = $remoteModuleLoader->loadLatestVersionByArchiveName($archiveName); - - $localModuleLoader = LocalModuleLoader::getModuleLoader(); - $localModules = $localModuleLoader->loadAllVersionsByArchiveName($archiveName); + $remoteModule = $this->remoteModuleLoader->loadLatestVersionByArchiveName($archiveName); + $localModules = $this->localModuleLoader->loadAllVersionsByArchiveName($archiveName); $modules = $localModules; if ($remoteModule) { $modules[] = $remoteModule; } - $modules = ModuleFilter::filterValid($modules); + $modules = $this->moduleFilter->filterValid($modules); return $modules; } @@ -119,15 +132,13 @@ public function loadAllVersionsByArchiveNameWithLatestRemote(string $archiveName */ public function loadByArchiveNameAndVersion(string $archiveName, string $version): ?Module { - $moduleLoader = LocalModuleLoader::getModuleLoader(); - $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); + $module = $this->localModuleLoader->loadByArchiveNameAndVersion($archiveName, $version); if ($module) { return $module; } - $moduleLoader = RemoteModuleLoader::getModuleLoader(); - $module = $moduleLoader->loadByArchiveNameAndVersion($archiveName, $version); + $module = $this->remoteModuleLoader->loadByArchiveNameAndVersion($archiveName, $version); return $module; } @@ -139,19 +150,17 @@ public function loadByArchiveNameAndVersion(string $archiveName, string $version public function loadLatestVersionByArchiveName(string $archiveName): ?Module { $modules = []; - $localModuleLoader = LocalModuleLoader::getModuleLoader(); - $module = $localModuleLoader->loadLatestVersionByArchiveName($archiveName); + $module = $this->localModuleLoader->loadLatestVersionByArchiveName($archiveName); if ($module) { $modules[] = $module; } - $remoteModuleLoader = RemoteModuleLoader::getModuleLoader(); - $module = $remoteModuleLoader->loadLatestVersionByArchiveName($archiveName); + $module = $this->remoteModuleLoader->loadLatestVersionByArchiveName($archiveName); if ($module) { $modules[] = $module; } - $latestVersion = ModuleFilter::getLatestVersion($modules); + $latestVersion = $this->moduleFilter->getLatestVersion($modules); return $latestVersion; } @@ -163,7 +172,7 @@ public function loadLatestVersionByArchiveName(string $archiveName): ?Module public function loadAllByArchiveNameAndConstraint(string $archiveName, string $versionConstraint): array { $modules = $this->loadAllVersionsByArchiveName($archiveName); - $modules = ModuleFilter::filterByVersionConstrain($modules, $versionConstraint); + $modules = $this->moduleFilter->filterByVersionConstrain($modules, $versionConstraint); return $modules; } @@ -174,7 +183,7 @@ public function loadAllByArchiveNameAndConstraint(string $archiveName, string $v public function loadLatestByArchiveNameAndConstraint(string $archiveName, string $versionConstraint): ?Module { $modules = $this->loadAllByArchiveNameAndConstraint($archiveName, $versionConstraint); - $module = ModuleFilter::getLatestVersion($modules); + $module = $this->moduleFilter->getLatestVersion($modules); return $module; } } diff --git a/src/Classes/Loader/RemoteModuleLoader.php b/src/Classes/Loader/RemoteModuleLoader.php index d3e57e44..b5aaf201 100644 --- a/src/Classes/Loader/RemoteModuleLoader.php +++ b/src/Classes/Loader/RemoteModuleLoader.php @@ -18,9 +18,8 @@ class RemoteModuleLoader { - private static $moduleLoader = null; - - private $cachedModules; + /** @var Module[] */ + private static $cachedModules = []; /** @var ApiRequest */ private $apiRequest; @@ -28,21 +27,16 @@ class RemoteModuleLoader /** @var ApiV1ModuleConverter */ protected $moduleConverter; - public function __construct(ApiRequest $apiRequest, ApiV1ModuleConverter $moduleConverter) + public static function create(): RemoteModuleLoader { - $this->apiRequest = $apiRequest; - $this->moduleConverter = $moduleConverter; + $remoteModuleLoader = new RemoteModuleLoader(new ApiRequest(), new ApiV1ModuleConverter()); + return $remoteModuleLoader; } - public static function getModuleLoader(): RemoteModuleLoader + public function __construct(ApiRequest $apiRequest, ApiV1ModuleConverter $moduleConverter) { - if (!self::$moduleLoader) { - self::$moduleLoader = new RemoteModuleLoader( - new ApiRequest(), - new ApiV1ModuleConverter() - ); - } - return self::$moduleLoader; + $this->apiRequest = $apiRequest; + $this->moduleConverter = $moduleConverter; } /** @@ -53,7 +47,7 @@ public static function getModuleLoader(): RemoteModuleLoader */ public function resetCache() { - $this->cachedModules = null; + self::$cachedModules = []; } /** @@ -75,15 +69,15 @@ public function loadAllVersions(): array */ public function loadAllLatestVersions(): array { - if (isset($this->cachedModules)) { - return $this->cachedModules; + if (self::$cachedModules) { + return self::$cachedModules; } $result = $this->apiRequest->getModules(['filter' => 'latestVersion']); $modules = $this->moduleConverter->convertToModules($result); - $this->cachedModules = $modules; - return $this->cachedModules; + self::$cachedModules = $modules; + return self::$cachedModules; } /** diff --git a/src/Classes/Module.php b/src/Classes/Module.php index a9f4fda1..90793205 100644 --- a/src/Classes/Module.php +++ b/src/Classes/Module.php @@ -456,7 +456,7 @@ public function isLoaded(): bool return true; } - $localModuleLoader = LocalModuleLoader::getModuleLoader(); + $localModuleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $localModule = $localModuleLoader->loadByArchiveNameAndVersion( $this->getArchiveName(), $this->getVersion() @@ -558,7 +558,8 @@ public function getTemplateFiles($file): array public function getInstalledVersion(): ?Module { $modules = $this->getLocalVersions(); - $modules = ModuleFilter::filterInstalled($modules); + $moduleFilter = ModuleFilter::createFromConfig(); + $modules = $moduleFilter->filterInstalled($modules); return $modules[0] ?? null; } @@ -568,9 +569,10 @@ public function getInstalledVersion(): ?Module */ public function getNewestVersion(): Module { - $moduleLoader = ModuleLoader::getModuleLoader(); + $moduleLoader = ModuleLoader::create(Config::getDependenyMode()); $modules = $moduleLoader->loadAllVersionsByArchiveNameWithLatestRemote($this->getArchiveName()); - if ($module = ModuleFilter::getLatestVersion($modules)) { + $moduleFilter = ModuleFilter::createFromConfig(); + if ($module = $moduleFilter->getLatestVersion($modules)) { return $module; } return $this; @@ -583,7 +585,7 @@ public function getNewestVersion(): Module */ public function getVersions(): array { - $moduleLoader = ModuleLoader::getModuleLoader(); + $moduleLoader = ModuleLoader::create(Config::getDependenyMode()); $modules = $moduleLoader->loadAllVersionsByArchiveName($this->getArchiveName()); $modules = ModuleSorter::sortByVersion($modules); return $modules; @@ -596,7 +598,7 @@ public function getVersions(): array */ public function getLocalVersions(): array { - $localModuleLoader = LocalModuleLoader::getModuleLoader(); + $localModuleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $modules = $localModuleLoader->loadAllVersionsByArchiveName($this->getArchiveName()); $modules = ModuleSorter::sortByVersion($modules); return $modules; @@ -609,10 +611,11 @@ public function getLocalVersions(): array */ public function getUsedBy(): array { - $localModuleLoader = LocalModuleLoader::getModuleLoader(); + $localModuleLoader = LocalModuleLoader::create(Config::getDependenyMode()); $installedModules = $localModuleLoader->loadAllInstalledVersions(); - $dependencyManager = new DependencyManager(); + // TODO: DI besser machen + $dependencyManager = DependencyManager::create(Config::getDependenyMode()); $usedByEntrys = $dependencyManager->getUsedByEntrys($this, $installedModules); $usedByModules = []; diff --git a/src/Classes/ModuleFilter.php b/src/Classes/ModuleFilter.php index 7cf61d57..56ae19f2 100644 --- a/src/Classes/ModuleFilter.php +++ b/src/Classes/ModuleFilter.php @@ -16,17 +16,34 @@ use RobinTheHood\ModifiedModuleLoaderClient\Module; use RobinTheHood\ModifiedModuleLoaderClient\ModuleStatus; use RobinTheHood\ModifiedModuleLoaderClient\Semver\Comparator; -use RobinTheHood\ModifiedModuleLoaderClient\Semver\Parser; class ModuleFilter { - public static $comparator; + /** @var Comparator */ + public $comparator; + + public static function create(int $mode): ModuleFilter + { + $comparator = Comparator::create($mode); + $moduleFilter = new ModuleFilter($comparator); + return $moduleFilter; + } + + public static function createFromConfig(): ModuleFilter + { + return self::create(Config::getDependenyMode()); + } + + public function __construct(Comparator $comparator) + { + $this->comparator = $comparator; + } /** * @param Module[] $modules * @return Module[] */ - public static function filterLoaded(array $modules): array + public function filterLoaded(array $modules): array { $filteredModules = []; foreach ($modules as $module) { @@ -41,7 +58,7 @@ public static function filterLoaded(array $modules): array * @param Module[] $modules * @return Module[] */ - public static function filterInstalled(array $modules): array + public function filterInstalled(array $modules): array { $filteredModules = []; foreach ($modules as $module) { @@ -56,7 +73,7 @@ public static function filterInstalled(array $modules): array * @param Module[] $modules * @return Module[] */ - public static function filterUpdatable(array $modules): array + public function filterUpdatable(array $modules): array { $filteredModules = []; foreach ($modules as $module) { @@ -71,7 +88,7 @@ public static function filterUpdatable(array $modules): array * @param Module[] $modules * @return Module[] */ - public static function filterRepairable(array $modules): array + public function filterRepairable(array $modules): array { $filteredModules = []; foreach ($modules as $module) { @@ -86,7 +103,7 @@ public static function filterRepairable(array $modules): array * @param Module[] $modules * @return Module[] */ - public static function filterNotLoaded(array $modules): array + public function filterNotLoaded(array $modules): array { $filteredModules = []; foreach ($modules as $module) { @@ -101,7 +118,7 @@ public static function filterNotLoaded(array $modules): array * @param Module[] $modules * @return Module[] */ - public static function filterValid(array $modules): array + public function filterValid(array $modules): array { $filteredModules = []; foreach ($modules as $module) { @@ -116,7 +133,7 @@ public static function filterValid(array $modules): array * @param Module[] $modules * @return Module[] */ - public static function filterNewestVersion(array $modules): array + public function filterNewestVersion(array $modules): array { $filteredModules = []; foreach ($modules as $module) { @@ -126,8 +143,7 @@ public static function filterNewestVersion(array $modules): array continue; } - $comparator = self::$comparator ?? SemverComparatorFactory::createComparator(); - if ($comparator->lessThan($module->getVersion(), $filteredModule->getVersion())) { + if ($this->comparator->lessThan($module->getVersion(), $filteredModule->getVersion())) { $insertOrReplace = false; break; } @@ -145,7 +161,7 @@ public static function filterNewestVersion(array $modules): array * @param Module[] $modules * @return Module[] */ - public static function filterNewestOrInstalledVersion($modules): array + public function filterNewestOrInstalledVersion($modules): array { $filteredModules = []; foreach ($modules as $module) { @@ -164,8 +180,7 @@ public static function filterNewestOrInstalledVersion($modules): array break; } - $comparator = self::$comparator ?? SemverComparatorFactory::createComparator(); - if ($comparator->lessThan($module->getVersion(), $filteredModule->getVersion())) { + if ($this->comparator->lessThan($module->getVersion(), $filteredModule->getVersion())) { $insertOrReplace = false; break; } @@ -183,7 +198,7 @@ public static function filterNewestOrInstalledVersion($modules): array * @param Module[] $modules * @return Module[] */ - public static function filterByArchiveName(array $modules, string $archiveName): array + public function filterByArchiveName(array $modules, string $archiveName): array { $filteredModules = []; foreach ($modules as $module) { @@ -198,7 +213,7 @@ public static function filterByArchiveName(array $modules, string $archiveName): * @param Module[] $modules * @return Module[] */ - public static function filterByVersion(array $modules, string $version): array + public function filterByVersion(array $modules, string $version): array { $filteredModules = []; foreach ($modules as $module) { @@ -213,12 +228,11 @@ public static function filterByVersion(array $modules, string $version): array * @param Module[] $modules * @return Module[] */ - public static function filterByVersionConstrain(array $modules, string $constrain): array + public function filterByVersionConstrain(array $modules, string $constrain): array { $filteredModules = []; foreach ($modules as $module) { - $comparator = self::$comparator ?? SemverComparatorFactory::createComparator(); - if ($comparator->satisfies($module->getVersion(), $constrain)) { + if ($this->comparator->satisfies($module->getVersion(), $constrain)) { $filteredModules[] = $module; } } @@ -228,12 +242,14 @@ public static function filterByVersionConstrain(array $modules, string $constrai /** * @param Module[] $modules */ - public static function getLatestVersion(array $modules): ?Module + public function getLatestVersion(array $modules): ?Module { $selectedModule = null; foreach ($modules as $module) { - $comparator = self::$comparator ?? SemverComparatorFactory::createComparator(); - if (!$selectedModule || $comparator->greaterThan($module->getVersion(), $selectedModule->getVersion())) { + if ( + !$selectedModule + || $this->comparator->greaterThan($module->getVersion(), $selectedModule->getVersion()) + ) { $selectedModule = $module; } } @@ -244,7 +260,7 @@ public static function getLatestVersion(array $modules): ?Module * @param Module[] $modules * @return Module|null */ - public static function getByArchiveNameAndVersion(array $modules, string $archiveName, string $version): ?Module + public function getByArchiveNameAndVersion(array $modules, string $archiveName, string $version): ?Module { foreach ($modules as $module) { if ($module->getArchiveName() != $archiveName) { diff --git a/src/Classes/ModuleInstaller.php b/src/Classes/ModuleInstaller.php index 8e519b38..1b21f414 100644 --- a/src/Classes/ModuleInstaller.php +++ b/src/Classes/ModuleInstaller.php @@ -29,6 +29,39 @@ class ModuleInstaller { + /** @var DependencyManager */ + private $dependencyManager; + + /** @var ModuleFilter */ + private $moduleFilter; + + /** @var LocalModuleLoader */ + private $localModuleLoader; + + public static function create(int $mode): ModuleInstaller + { + $dependencyManager = DependencyManager::create($mode); + $moduleFilter = ModuleFilter::create($mode); + $localModuleLoader = LocalModuleLoader::create($mode); + $moduleInstaller = new ModuleInstaller($dependencyManager, $moduleFilter, $localModuleLoader); + return $moduleInstaller; + } + + public static function createFromConfig(): ModuleInstaller + { + return self::create(Config::getDependenyMode()); + } + + public function __construct( + DependencyManager $dependencyManager, + ModuleFilter $moduleFilter, + LocalModuleLoader $localModuleLoader + ) { + $this->dependencyManager = $dependencyManager; + $this->moduleFilter = $moduleFilter; + $this->localModuleLoader = $localModuleLoader; + } + public function pull(Module $module): bool { if ($module->isLoaded()) { @@ -88,8 +121,7 @@ public function delete(Module $module) public function install(Module $module, bool $force = false): void { if (!$force) { - $dependencyManager = new DependencyManager(); - $dependencyManager->canBeInstalled($module); + $this->dependencyManager->canBeInstalled($module); } $this->internalInstall($module); @@ -98,8 +130,7 @@ public function install(Module $module, bool $force = false): void public function installWithDependencies(Module $module): void { - $dependencyManager = new DependencyManager(); - $combinationSatisfyerResult = $dependencyManager->canBeInstalled($module, ['']); + $combinationSatisfyerResult = $this->dependencyManager->canBeInstalled($module, ['']); if (!$combinationSatisfyerResult->foundCombination) { $message = @@ -177,8 +208,7 @@ private function internalPullAndInstall(Module $module): void private function internalInstallDependencies(Module $parentModule, Combination $combination): void { - $dependencyManager = new DependencyManager(); - $modules = $dependencyManager->getAllModulesFromCombination($combination); + $modules = $this->dependencyManager->getAllModulesFromCombination($combination); foreach ($modules as $module) { if ($parentModule->getArchiveName() === $module->getArchiveName()) { @@ -193,8 +223,7 @@ public function update(Module $module): ?Module $installedModule = $module->getInstalledVersion(); $newModule = $module->getNewestVersion(); - $dependencyManager = new DependencyManager(); - $combinationSatisfyerResult = $dependencyManager->canBeInstalled($module); + $combinationSatisfyerResult = $this->dependencyManager->canBeInstalled($module); if (!$combinationSatisfyerResult->foundCombination) { $message = @@ -222,8 +251,7 @@ public function updateWithDependencies(Module $module): ?Module $installedModule = $module->getInstalledVersion(); $newModule = $module->getNewestVersion(); - $dependencyManager = new DependencyManager(); - $combinationSatisfyerResult = $dependencyManager->canBeInstalled($module); + $combinationSatisfyerResult = $this->dependencyManager->canBeInstalled($module); if (!$combinationSatisfyerResult->foundCombination) { $message = @@ -249,9 +277,8 @@ public function updateWithDependencies(Module $module): ?Module private function reload(Module $module): Module { - $moduleLoader = new LocalModuleLoader(); - $moduleLoader->resetCache(); - $reloadedModule = $moduleLoader->loadByArchiveNameAndVersion( + $this->localModuleLoader->resetCache(); + $reloadedModule = $this->localModuleLoader->loadByArchiveNameAndVersion( $module->getArchiveName(), $module->getVersion() ); @@ -279,10 +306,9 @@ public function revertChanges(Module $module): void private function createAutoloadFile(): void { - $localModuleLoader = LocalModuleLoader::getModuleLoader(); - $localModuleLoader->resetCache(); - $localModules = $localModuleLoader->loadAllVersions(); - $installedLocalModules = ModuleFilter::filterInstalled($localModules); + $this->localModuleLoader->resetCache(); + $localModules = $this->localModuleLoader->loadAllVersions(); + $installedLocalModules = $this->moduleFilter->filterInstalled($localModules); $namespaceEntrys = []; foreach ($installedLocalModules as $module) { diff --git a/tests/unit/DependencyManager/DependencyBuilderTest.php b/tests/unit/DependencyManager/DependencyBuilderTest.php index 3ebdaa9a..93ebeb88 100644 --- a/tests/unit/DependencyManager/DependencyBuilderTest.php +++ b/tests/unit/DependencyManager/DependencyBuilderTest.php @@ -24,9 +24,7 @@ class DependencyBuilderTest extends TestCase { public function testSatisfies1() { - ModuleFilter::$comparator = Comparator::create(Comparator::CARET_MODE_STRICT); - - $dependencyBuilder = new DependencyBuilder(); + $dependencyBuilder = DependencyBuilder::create(Comparator::CARET_MODE_STRICT); $systemSet = new SystemSet(); $systemSet->set([ @@ -76,9 +74,7 @@ public function testSatisfies1() public function testSatisfies2() { - ModuleFilter::$comparator = Comparator::create(Comparator::CARET_MODE_STRICT); - - $dependencyBuilder = new DependencyBuilder(); + $dependencyBuilder = DependencyBuilder::create(Comparator::CARET_MODE_STRICT); $systemSet = new SystemSet(); $systemSet->set([ @@ -129,7 +125,7 @@ public function testSatisfies2() public function atestInvokeDependency() { - $dpb = new DependencyBuilder(); + $dpb = DependencyBuilder::create(Comparator::CARET_MODE_STRICT); $dpb->test(); die('TEST DONE'); } diff --git a/tests/unit/ModuleLoaderTest.php b/tests/unit/ModuleLoaderTest.php index 55cd4128..ea21c129 100644 --- a/tests/unit/ModuleLoaderTest.php +++ b/tests/unit/ModuleLoaderTest.php @@ -15,7 +15,6 @@ use PHPUnit\Framework\TestCase; use RobinTheHood\ModifiedModuleLoaderClient\Loader\ModuleLoader; -use RobinTheHood\ModifiedModuleLoaderClient\ModuleFilter; use RobinTheHood\ModifiedModuleLoaderClient\Semver\Comparator; class ModuleLoaderTest extends TestCase @@ -24,7 +23,7 @@ class ModuleLoaderTest extends TestCase protected function setUp(): void { - $this->loader = new ModuleLoader(); + $this->loader = ModuleLoader::create(Comparator::CARET_MODE_STRICT); } public function testCanLoadAllVersionsByContraintWithLocalAuto() @@ -54,8 +53,6 @@ public function testCanLoadAllVersionsByContraintWithLocalAuto() public function testCanLoadAllVersionsByContraint() { - ModuleFilter::$comparator = Comparator::create(Comparator::CARET_MODE_STRICT); - $modules = $this->loader->loadAllByArchiveNameAndConstraint('robinthehood/modified-std-module', '1.0.0'); $this->assertEquals(0, count($modules)); diff --git a/tests/unit/RemoteModuleLoaderTest.php b/tests/unit/RemoteModuleLoaderTest.php index 15df5bf5..4629ff05 100644 --- a/tests/unit/RemoteModuleLoaderTest.php +++ b/tests/unit/RemoteModuleLoaderTest.php @@ -17,14 +17,19 @@ use RobinTheHood\ModifiedModuleLoaderClient\Loader\RemoteModuleLoader; use RobinTheHood\ModifiedModuleLoaderClient\Module; use RobinTheHood\ModifiedModuleLoaderClient\ModuleFilter; +use RobinTheHood\ModifiedModuleLoaderClient\Semver\Comparator; class RemoteModuleLoaderTest extends TestCase { private $loader; + /** @var ModuleFilter */ + private $moduleFilter; + protected function setUp(): void { - $this->loader = RemoteModuleLoader::getModuleLoader(); + $this->loader = RemoteModuleLoader::create(); + $this->moduleFilter = ModuleFilter::create(Comparator::CARET_MODE_STRICT); } public function testCanLoadAllVersions() @@ -34,10 +39,10 @@ public function testCanLoadAllVersions() $this->assertContainsOnlyInstancesOf(Module::class, $modules); $this->assertGreaterThan(150, count($modules)); - $filteredModules = ModuleFilter::filterByArchiveName($modules, 'composer/autoload'); + $filteredModules = $this->moduleFilter->filterByArchiveName($modules, 'composer/autoload'); $this->assertGreaterThan(1, count($filteredModules)); - $filteredModules = ModuleFilter::filterByArchiveName($modules, 'robinthehood/modified-std-module'); + $filteredModules = $this->moduleFilter->filterByArchiveName($modules, 'robinthehood/modified-std-module'); $this->assertGreaterThan(2, count($filteredModules)); } @@ -48,10 +53,10 @@ public function testCanLoadAllLatestVersions() $this->assertContainsOnlyInstancesOf(Module::class, $modules); $this->assertGreaterThan(30, count($modules)); - $filteredModules = ModuleFilter::filterNewestVersion($modules); + $filteredModules = $this->moduleFilter->filterNewestVersion($modules); $this->assertEquals(count($filteredModules), count($modules)); - $filteredModules = ModuleFilter::filterByArchiveName($modules, 'robinthehood/modified-std-module'); + $filteredModules = $this->moduleFilter->filterByArchiveName($modules, 'robinthehood/modified-std-module'); $this->assertEquals(1, count($filteredModules)); }