64 lines
2.1 KiB
PHP
Executable file
64 lines
2.1 KiB
PHP
Executable file
#!/usr/bin/php
|
|
<?php
|
|
chdir(__DIR__);
|
|
require_once __DIR__ . "/vendor/autoload.php";
|
|
|
|
use \GuzzleHttp\Client as Guzzle;
|
|
use \MaddHatter\MarkdownTable\Builder as TableBuilder;
|
|
|
|
$client = new Guzzle();
|
|
$images = ['gone/php', 'gone/node', 'gone/marshall', ];
|
|
$results = [];
|
|
foreach($images as $image) {
|
|
$results[$image] = [];
|
|
$url = "https://hub.docker.com/v2/repositories/{$image}/tags/";
|
|
$allLoaded = false;
|
|
while ($allLoaded == false) {
|
|
$data = $client->get($url)->getBody()->getContents();
|
|
$json = json_decode($data, true);
|
|
|
|
$results[$image] = array_merge($results[$image], $json['results']);
|
|
if ($json['next']) {
|
|
$url = $json['next'];
|
|
} else {
|
|
$allLoaded = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
$tableBuilder = new TableBuilder();
|
|
|
|
$tableBuilder->headers(['Name', 'Architecture', 'Size', 'Last Updated', 'Microbadger']);
|
|
$tableBuilder->align(['L','L', 'R','R','C']);
|
|
|
|
foreach($results as $image => $variants){
|
|
foreach($variants as $variant) {
|
|
$fullImageName = $image . ":" . $variant['name'];
|
|
$megabytes = number_format($variant['full_size'] / 1024 / 1024, 2);
|
|
$sizeColour = 'green';
|
|
if($megabytes > 150){
|
|
$sizeColour = 'orange';
|
|
}
|
|
if($megabytes > 180){
|
|
$sizeColour = 'red';
|
|
}
|
|
|
|
$arches = [];
|
|
foreach($variant['images'] as $archSpecificImage){
|
|
$arches[] = $archSpecificImage['architecture'];
|
|
}
|
|
$tableBuilder->row([
|
|
$fullImageName,
|
|
strtoupper(implode(", ", $arches)),
|
|
"[](https://hub.docker.com/r/{$image})",
|
|
date("Y-m-d H:i:s", strtotime($variant['last_updated'])),
|
|
"[](https://microbadger.com/images/{$fullImageName} \"Get your own image badge on microbadger.com\")",
|
|
]);
|
|
}
|
|
}
|
|
|
|
$readme = file_get_contents(__DIR__ ."/../README.template");
|
|
|
|
$readme = str_replace("{{TABLE}}", $tableBuilder->render(), $readme);
|
|
|
|
file_put_contents(__DIR__ . "/../README.md", $readme);
|