mirror of
https://github.com/RayLabsHQ/gitea-mirror.git
synced 2025-12-08 20:46:44 +03:00
refactor: improve version comparison logic in health API
This commit is contained in:
@@ -58,7 +58,7 @@ export const GET: APIRoute = async () => {
|
|||||||
latestVersion: latestVersion,
|
latestVersion: latestVersion,
|
||||||
updateAvailable: latestVersion !== "unknown" &&
|
updateAvailable: latestVersion !== "unknown" &&
|
||||||
currentVersion !== "unknown" &&
|
currentVersion !== "unknown" &&
|
||||||
latestVersion !== currentVersion,
|
compareVersions(currentVersion, latestVersion) < 0,
|
||||||
database: dbStatus,
|
database: dbStatus,
|
||||||
recovery: recoveryStatus,
|
recovery: recoveryStatus,
|
||||||
system: systemInfo,
|
system: systemInfo,
|
||||||
@@ -174,6 +174,28 @@ function formatBytes(bytes: number): string {
|
|||||||
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compare semantic versions
|
||||||
|
* Returns:
|
||||||
|
* -1 if v1 < v2
|
||||||
|
* 0 if v1 = v2
|
||||||
|
* 1 if v1 > v2
|
||||||
|
*/
|
||||||
|
function compareVersions(v1: string, v2: string): number {
|
||||||
|
const parts1 = v1.split('.').map(Number);
|
||||||
|
const parts2 = v2.split('.').map(Number);
|
||||||
|
|
||||||
|
for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
|
||||||
|
const part1 = parts1[i] || 0;
|
||||||
|
const part2 = parts2[i] || 0;
|
||||||
|
|
||||||
|
if (part1 < part2) return -1;
|
||||||
|
if (part1 > part2) return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check for the latest version from GitHub releases
|
* Check for the latest version from GitHub releases
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user