Skip to content

Commit

Permalink
Merge pull request #220 from vtsykun/fix/proxy-uid
Browse files Browse the repository at this point in the history
Fix support proxy format without version_normalized and packages uid
  • Loading branch information
vtsykun committed Jan 24, 2024
2 parents de63f80 + 3ae8312 commit 91ba893
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
16 changes: 16 additions & 0 deletions src/Composer/MetadataMinifier.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@
class MetadataMinifier
{
private static $masterVersions = ['dev-master', 'dev-main', 'dev-default', 'dev-trunk'];
private VersionParser $parser;

public function __construct()
{
$this->parser = new VersionParser();
}

/**
* Convert metadata v1 to metadata v2
Expand All @@ -24,6 +30,7 @@ public function minify(array $metadata, ?bool $isDev = true, &$lastModified = nu

foreach ($packages as $packName => $versions) {
$versions = \array_filter($versions, fn($v) => $isDev === null || $this->isValidStability($v, $isDev));
$versions = \array_map(fn($v) => $v + ['version_normalized' => $v['version_normalized'] ?? $this->normalizeVersion($v['version'])], $versions);

\usort($versions, fn($v1, $v2) => -1 * version_compare($v1['version_normalized'], $v2['version_normalized']));
\array_map(fn($v) => $obj->time < ($v['time'] ?? 0) ? $obj->time = ($v['time'] ?? 0) : null, $versions);
Expand Down Expand Up @@ -93,6 +100,15 @@ private function doExpand(array $metadata): array
return ['packages' => $metadata['packages'] ?? []];
}

private function normalizeVersion(string $version): string
{
try {
return $this->parser->normalize($version);
} catch (\Throwable $e) {
return $version;
}
}

public static function getNormalizedVersionV1($version)
{
if (in_array($version, self::$masterVersions, true)) {
Expand Down
27 changes: 26 additions & 1 deletion src/Mirror/Manager/RootMetadataMerger.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,31 @@ public function merge(JsonMetadata $stamps, int $composerApi = null): JsonMetada
];
}

return $stamps->withContent(\array_merge($rootFile, $newFile), \JSON_UNESCAPED_SLASHES | \JSON_PRETTY_PRINT);
$result = \array_merge($rootFile, $newFile);
$this->normalizePackagesNode($result);

return $stamps->withContent($result, \JSON_UNESCAPED_SLASHES | \JSON_PRETTY_PRINT);
}

protected function normalizePackagesNode(array &$result): void
{
if (!is_array($packages = $result['packages'] ?? null)) {
return;
}

$i = 1;
foreach ($packages as $packageName => $list) {
if (!is_array($list)) {
break;
}
foreach ($list as $ver => $pkg) {
if (isset($pkg['uid'])) {
break 2;
}
$list[$ver]['uid'] = $i++;
}
$packages[$packageName] = $list;
}
$result['packages'] = $packages;
}
}

0 comments on commit 91ba893

Please sign in to comment.