Skip to content

Commit 78d8ec2

Browse files
committed
Fixes
Signed-off-by: Tim Goudriaan <tim@codedmonkey.com>
1 parent 7505cd3 commit 78d8ec2

File tree

4 files changed

+34
-30
lines changed

4 files changed

+34
-30
lines changed

src/Doctrine/Entity/Package.php

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -520,9 +520,11 @@ public function getDevVersions(): array
520520
return true;
521521
}
522522

523+
$metadata = $version->getCurrentMetadata();
524+
523525
static $parser = new VersionParser();
524526

525-
return $version->hasVersionAlias() && str_ends_with((string) $parser->normalize($version->getVersionAlias()), '.9999999-dev');
527+
return $metadata->hasVersionAlias() && str_ends_with((string) $parser->normalize($metadata->getVersionAlias()), '.9999999-dev');
526528
});
527529
}
528530

@@ -536,41 +538,46 @@ public function getDevBranchVersions(): array
536538
return array_filter($this->getSortedVersions(), static fn (Version $version) => str_starts_with($version->getNormalizedName(), 'dev-'));
537539
}
538540

541+
/**
542+
* Sort versions from newest to oldest.
543+
*/
539544
public static function sortVersions(Version $a, Version $b): int
540545
{
541-
$aVersion = $a->getNormalizedName();
542-
$bVersion = $b->getNormalizedName();
546+
$aName = $a->getNormalizedName();
547+
$bName = $b->getNormalizedName();
543548

544-
// use branch alias for sorting if one is provided
545-
if (isset($a->getExtra()['branch-alias'][$aVersion])) {
546-
$aVersion = Preg::replace('{(.x)?-dev$}', '.9999999-dev', $a->getExtra()['branch-alias'][$aVersion]);
549+
// Use the branch alias for sorting if one is provided
550+
if (null !== $aBranchAlias = $a->getCurrentMetadata()->getExtra()['branch-alias'][$aName] ?? null) {
551+
$aName = Preg::replace('{(.x)?-dev$}', '.9999999-dev', $aBranchAlias);
547552
}
548-
if (isset($b->getExtra()['branch-alias'][$bVersion])) {
549-
$bVersion = Preg::replace('{(.x)?-dev$}', '.9999999-dev', $b->getExtra()['branch-alias'][$bVersion]);
553+
if (null !== $bBranchAlias = $b->getCurrentMetadata()->getExtra()['branch-alias'][$bName] ?? null) {
554+
$bName = Preg::replace('{(.x)?-dev$}', '.9999999-dev', $bBranchAlias);
550555
}
551556

552-
$aVersion = Preg::replace('{^dev-.*}', '0.0.0-alpha', $aVersion);
553-
$bVersion = Preg::replace('{^dev-.*}', '0.0.0-alpha', $bVersion);
557+
$aName = Preg::replace('{^dev-.*}', '0.0.0-alpha', $aName);
558+
$bName = Preg::replace('{^dev-.*}', '0.0.0-alpha', $bName);
554559

555-
// sort default branch first if it is non numeric
556-
if ('0.0.0-alpha' === $aVersion && $a->isDefaultBranch()) {
560+
// Sort the default branch first if it is non-numeric
561+
if ('0.0.0-alpha' === $aName && $a->isDefaultBranch()) {
557562
return -1;
558563
}
559-
if ('0.0.0-alpha' === $bVersion && $b->isDefaultBranch()) {
564+
if ('0.0.0-alpha' === $bName && $b->isDefaultBranch()) {
560565
return 1;
561566
}
562567

563-
// equal versions are sorted by date
564-
if ($aVersion === $bVersion) {
565-
// make sure sort is stable
566-
if ($a->getReleasedAt() === $b->getReleasedAt()) {
567-
return $a->getNormalizedName() <=> $b->getNormalizedName();
568-
}
568+
if ($aName !== $bName) {
569+
return version_compare($bName, $aName);
570+
}
571+
572+
// Equal versions are sorted by release date
573+
$aReleasedAt = $a->getCurrentMetadata()->getReleasedAt();
574+
$bReleasedAt = $b->getCurrentMetadata()->getReleasedAt();
569575

570-
return $b->getReleasedAt() > $a->getReleasedAt() ? 1 : -1;
576+
if (0 !== $sort = $bReleasedAt <=> $aReleasedAt) {
577+
return $sort;
571578
}
572579

573-
// the rest is sorted by version
574-
return version_compare($bVersion, $aVersion);
580+
// Add a stable fallback sort
581+
return $b->getId() <=> $a->getId();
575582
}
576583
}

src/Doctrine/Entity/Version.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,6 @@ public function setUpdatedAt(\DateTimeImmutable $updatedAt): void
115115
$this->updatedAt = $updatedAt;
116116
}
117117

118-
public function getReleasedAt(): ?\DateTimeImmutable
119-
{
120-
return $this->currentMetadata->getReleasedAt();
121-
}
122-
123118
public function getPackage(): ?Package
124119
{
125120
return $this->package;

src/Package/PackageDistributionResolver.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,13 @@ public function resolve(Version $version, string $reference, string $type): bool
4141
return true;
4242
}
4343

44-
if ($reference !== $version->getDistReference() || $type !== $version->getDistType()) {
44+
$metadata = $version->getCurrentMetadata();
45+
46+
if ($reference !== $metadata->getDistReference() || $type !== $metadata->getDistType()) {
4547
return false;
4648
}
4749

48-
$distUrl = $version->getDistUrl();
50+
$distUrl = $metadata->getDistUrl();
4951
$path = $this->path($packageName, $versionName, $reference, $type);
5052

5153
$this->filesystem->mkdir(dirname($path));

src/Package/PackageMetadataResolver.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ private function updatePackage(Package $package, array $composerPackages, ?VcsDr
229229

230230
// Only update the repository URL if the package is mirrored
231231
if ($package->getMirrorRegistry()) {
232-
$package->setRepositoryUrl($primaryVersion->getSourceUrl());
232+
$package->setRepositoryUrl($primaryVersion->getCurrentMetadata()->getSourceUrl());
233233
}
234234

235235
$this->messenger->dispatch(new UpdatePackageLinks($package->getId(), $primaryVersion->getNormalizedName()), [

0 commit comments

Comments
 (0)