@@ -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