Files
speedBB/app/Http/Controllers/VersionController.php
tracer 8e86fcdbd9
All checks were successful
CI/CD Pipeline / deploy (push) Successful in 23s
CI/CD Pipeline / promote_stable (push) Successful in 2s
Use composer metadata as primary source for version and ping build
2026-02-24 23:26:30 +01:00

48 lines
1.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Setting;
use Illuminate\Http\JsonResponse;
class VersionController extends Controller
{
public function __invoke(): JsonResponse
{
$composer = $this->readComposerMetadata();
$version = $composer['version'] ?? Setting::where('key', 'version')->value('value');
$build = $composer['build'] ?? Setting::where('key', 'build')->value('value');
return response()->json([
'version' => $version,
'build' => $build !== null ? (int) $build : null,
]);
}
private function readComposerMetadata(): array
{
$path = base_path('composer.json');
if (!is_file($path) || !is_readable($path)) {
return [];
}
$raw = file_get_contents($path);
if ($raw === false) {
return [];
}
$data = json_decode($raw, true);
if (!is_array($data)) {
return [];
}
$version = trim((string) ($data['version'] ?? ''));
$build = trim((string) ($data['build'] ?? ''));
return [
'version' => $version !== '' ? $version : null,
'build' => ctype_digit($build) ? (int) $build : null,
];
}
}