44 lines
1.4 KiB
PHP
44 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\JsonResponse;
|
|
|
|
final class BuildInfoController extends Controller
|
|
{
|
|
public function __invoke(): JsonResponse
|
|
{
|
|
$path = base_path('build-info.json');
|
|
|
|
if (! is_file($path) || ! is_readable($path)) {
|
|
return response()->json(['error' => 'Build info unavailable'], 404)
|
|
->header('Cache-Control', 'no-store, max-age=0');
|
|
}
|
|
|
|
$decoded = json_decode((string) file_get_contents($path), true);
|
|
|
|
if (! is_array($decoded)) {
|
|
return response()->json(['error' => 'Build info unavailable'], 404)
|
|
->header('Cache-Control', 'no-store, max-age=0');
|
|
}
|
|
|
|
$commit = trim((string) ($decoded['git_sha'] ?? ''));
|
|
$release = trim((string) ($decoded['release_id'] ?? ''));
|
|
$builtAt = trim((string) ($decoded['deployed_at_utc'] ?? ''));
|
|
|
|
if ($commit === '' || $release === '' || $builtAt === '') {
|
|
return response()->json(['error' => 'Build info unavailable'], 404)
|
|
->header('Cache-Control', 'no-store, max-age=0');
|
|
}
|
|
|
|
return response()->json([
|
|
'environment' => app()->environment(),
|
|
'commit' => $commit,
|
|
'built_at' => $builtAt,
|
|
'release' => $release,
|
|
])->header('Cache-Control', 'no-store, max-age=0');
|
|
}
|
|
}
|