-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreleases.js
71 lines (60 loc) · 2.36 KB
/
releases.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
async function fetchReleases() {
const response = await fetch('https://api.github.com/repos/nbfc-linux/nbfc-linux/releases');
const releases = await response.json();
return releases;
}
function compareVersions(v1, v2) {
const a = v1.replace(/^v/, '').split('.').map(Number);
const b = v2.replace(/^v/, '').split('.').map(Number);
for (let i = 0; i < Math.max(a.length, b.length); i++) {
if ((a[i] || 0) > (b[i] || 0)) return -1;
if ((a[i] || 0) < (b[i] || 0)) return 1;
}
return 0;
}
function findLatestAssets(releases) {
const latestDeb = { version: '', url: '' };
const latestRpm = { version: '', url: '' };
releases.sort((a, b) => compareVersions(a.tag_name, b.tag_name));
for (const release of releases) {
for (const asset of release.assets) {
if (!latestDeb.url && asset.name.endsWith('.deb')) {
latestDeb.version = release.tag_name;
latestDeb.url = asset.browser_download_url;
}
if (!latestRpm.url && asset.name.endsWith('.rpm')) {
latestRpm.version = release.tag_name;
latestRpm.url = asset.browser_download_url;
}
}
if (latestDeb.url && latestRpm.url) break;
}
return { latestDeb, latestRpm };
}
async function showDownloads() {
const downloadsDiv = document.getElementById('downloads');
try {
const releases = await fetchReleases();
const { latestDeb, latestRpm } = findLatestAssets(releases);
downloadsDiv.innerHTML = '';
if (latestDeb.url) {
const debLink = document.createElement('a');
debLink.href = latestDeb.url;
debLink.textContent = `Download .deb package (Version ${latestDeb.version})`;
downloadsDiv.appendChild(debLink);
}
if (latestRpm.url) {
const rpmLink = document.createElement('a');
rpmLink.href = latestRpm.url;
rpmLink.textContent = `Download .rpm package (Version ${latestRpm.version})`;
downloadsDiv.appendChild(rpmLink);
}
if (!latestDeb.url && !latestRpm.url) {
downloadsDiv.textContent = 'No packages found.';
}
} catch (error) {
console.error('Error loading releases:', error);
downloadsDiv.textContent = 'Failed to load releases.';
}
}
showDownloads();