Skip to content

Commit da95026

Browse files
committed
AC-970: Adjust plugin behavior to allow trusted versions.
1 parent 7132874 commit da95026

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

src/Plugin.php

+12-4
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,12 @@ private function getNonFixedConstraintList(Request $request): array
132132
if (!$this->nonFixedPackages) {
133133
$constraintList = [];
134134
foreach ($request->getJobs() as $job) {
135-
if ($job['cmd'] === 'install' && strpbrk($job['constraint']->getPrettyString(), "*^-~"))
136-
{
135+
if ($job['cmd'] === 'install' &&
136+
(strpbrk($job['constraint']->getPrettyString(), "*^-~") ||
137+
preg_match('{(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)}', $job['constraint']->getPrettyString()
138+
)
139+
)
140+
) {
137141
$constraintList[$job['packageName']] = true;
138142
}
139143
}
@@ -158,7 +162,9 @@ public function prePoolCreate(PrePoolCreateEvent $event): void
158162
* shared in the installer event on composer v2
159163
*/
160164
foreach ($event->getRequest()->getRequires() as $name => $constraint) {
161-
if (strpbrk($constraint->getPrettyString(), "*^-~")){
165+
$prettyString = $constraint->getPrettyString();
166+
$multiConstraint = preg_match('{(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)}', $prettyString);
167+
if (strpbrk($prettyString, "*^-~") || $multiConstraint){
162168
$constraintList[$name] = true;
163169
}
164170
}
@@ -168,7 +174,9 @@ public function prePoolCreate(PrePoolCreateEvent $event): void
168174
*/
169175
foreach ($event->getPackages() as $package) {
170176
foreach ($package->getRequires() as $name => $constraint) {
171-
if (strpbrk($constraint->getPrettyConstraint(), "*^-~"))
177+
$prettyConstraint = $constraint->getPrettyConstraint();
178+
$multiConstraint = preg_match('{(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)}', $prettyConstraint);
179+
if (strpbrk($prettyConstraint, "*^-~")|| $multiConstraint)
172180
$constraintList[$name] = true;
173181
}
174182
}

src/Utils/Version.php

-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ public function findBestCandidate(Composer $composer, string $packageName, Repos
3838
$bestCandidate = $this->findBestCandidateComposer1($composer, $packageName, $repository);
3939
} elseif ($composerMajorVersion === 2) {
4040
$bestCandidate = $this->findBestCandidateComposer2($composer, $packageName, $repository);
41-
} else {
42-
throw new Exception("Unrecognized Composer Version");
4341
}
4442

4543
if($bestCandidate instanceof PackageInterface){

0 commit comments

Comments
 (0)