8 use Composer\Package\Version\VersionParser;
38 $this->packageInfo = $packageInfoFactory->
create();
51 $masterList = isset($currentlyEnabledModules) ? $currentlyEnabledModules: $this->list->getNames();
53 $enabledModules = array_unique(array_merge($masterList, $moduleNames));
55 foreach ($moduleNames as $moduleName) {
57 foreach ($enabledModules as $enabledModule) {
58 $messages = $this->getConflictMessages($enabledModule, $moduleName);
59 if (!empty($messages)) {
60 $conflicts[] = implode(
"\n", $messages);
63 $conflictsAll[$moduleName] = $conflicts;
75 private function getConflictMessages($moduleA, $moduleB)
78 $versionParser =
new VersionParser();
79 if (isset($this->packageInfo->getConflict($moduleB)[$moduleA]) &&
80 $this->packageInfo->getConflict($moduleB)[$moduleA] &&
81 $this->packageInfo->getVersion($moduleA)
83 $constraintA = $versionParser->parseConstraints($this->packageInfo->getConflict($moduleB)[$moduleA]);
84 $constraintB = $versionParser->parseConstraints($this->packageInfo->getVersion($moduleA));
85 if ($constraintA->matches($constraintB)) {
86 $messages[] =
"$moduleB conflicts with current $moduleA version " .
87 $this->packageInfo->getVersion($moduleA) .
88 ' (version should not be ' . $this->packageInfo->getConflict($moduleB)[$moduleA] .
')';
91 if (isset($this->packageInfo->getConflict($moduleA)[$moduleB]) &&
92 $this->packageInfo->getConflict($moduleA)[$moduleB] &&
93 $this->packageInfo->getVersion($moduleB)
95 $constraintA = $versionParser->parseConstraints($this->packageInfo->getConflict($moduleA)[$moduleB]);
96 $constraintB = $versionParser->parseConstraints($this->packageInfo->getVersion($moduleB));
97 if ($constraintA->matches($constraintB)) {
98 $messages[] =
"$moduleA conflicts with current $moduleB version " .
99 $this->packageInfo->getVersion($moduleA) .
100 ' (version should not be ' . $this->packageInfo->getConflict($moduleA)[$moduleB] .
')';
__construct(ModuleList $list, PackageInfoFactory $packageInfoFactory)
checkConflictsWhenEnableModules($moduleNames, $currentlyEnabledModules=null)