Skip to content
This repository was archived by the owner on Aug 2, 2025. It is now read-only.

Commit 67c4217

Browse files
committed
Generate index.html
1 parent 10f1d94 commit 67c4217

File tree

1 file changed

+30
-7
lines changed

1 file changed

+30
-7
lines changed

src/Storage/FilesystemStorage.php

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,29 @@ public function write(iterable $versions, iterable $releases): void
2929
$this->writeMaintenedVersions($versions);
3030
$this->writeUnmaintenedVersions($versions);
3131
$this->writeReleaseVersions($releases);
32+
33+
$this->writeContent('index.html', <<<HTML
34+
<html>
35+
<head>
36+
<title>phpversions</title>
37+
</head>
38+
<body>
39+
<p>An API that expose all PHP versions:</p>
40+
<ul>
41+
<li><a href="/all.json">All main PHP versions</a></li>
42+
<li><a href="/releases.json">All PHP releases versions</a></li>
43+
<li><a href="/maintened.json">Maintened versions</a></li>
44+
<li><a href="/unmaintened.json">Unmainted versions</a></li>
45+
</ul>
46+
<p>Last update: {$this->clock->now()->format('Y-m-d H:i:s')}</p>
47+
</body>
48+
</html>
49+
HTML);
3250
}
3351

3452
private function writeAllVersionsFile(iterable $versions): void
3553
{
36-
$this->writeFile('all.json', $versions);
54+
$this->writeJson('all.json', $versions);
3755
}
3856

3957
/**
@@ -45,7 +63,7 @@ private function writeMaintenedVersions(iterable $versions): void
4563
fn (PhpVersion $version): bool => $version->getEndOfLife() > $this->clock->now(),
4664
);
4765

48-
$this->writeFile('maintened.json', $data);
66+
$this->writeJson('maintened.json', $data);
4967
}
5068

5169
private function writeUnmaintenedVersions(iterable $versions): void
@@ -54,24 +72,29 @@ private function writeUnmaintenedVersions(iterable $versions): void
5472
fn (PhpVersion $version): bool => $version->getEndOfLife() <= $this->clock->now(),
5573
);
5674

57-
$this->writeFile('unmaintened.json', $data);
75+
$this->writeJson('unmaintened.json', $data);
5876
}
5977

6078
private function writeReleaseVersions(iterable $releases): void
6179
{
62-
$this->writeFile('releases.json', $releases);
80+
$this->writeJson('releases.json', $releases);
81+
}
82+
83+
private function writeJson(string $file, iterable $data): void
84+
{
85+
$this->writeContent($file, ['items' => $this->serializer->serialize($data, 'json')]);
6386
}
6487

65-
private function writeFile(string $path, iterable $data): void
88+
private function writeContent(string $file, iterable|string $data): void
6689
{
67-
$fullpath = rtrim($this->outputFolder, DIRECTORY_SEPARATOR).'/'.ltrim($path, DIRECTORY_SEPARATOR);
90+
$fullpath = rtrim($this->outputFolder, DIRECTORY_SEPARATOR).'/'.ltrim($file, DIRECTORY_SEPARATOR);
6891

6992
$basedir = dirname($fullpath);
7093
if (!file_exists($basedir)) {
7194
@mkdir($basedir, 0777, true);
7295
}
7396

74-
if (false === file_put_contents($fullpath, ['items' => $this->serializer->serialize($data, 'json')])) {
97+
if (false === file_put_contents($fullpath, $data)) {
7598
throw new RuntimeException("An error occured while writing file.");
7699
}
77100
}

0 commit comments

Comments
 (0)