
This is much more useful to users and determining tag names this way is now obsolete so it needs to be changed regardless.
50 lines
1.8 KiB
JavaScript
50 lines
1.8 KiB
JavaScript
// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT
|
|
|
|
const baseUrl = "https://releases.grapheneos.org/";
|
|
const devices = ["tangorpro", "lynx", "cheetah", "panther", "bluejay", "raven", "oriole", "barbet", "redfin", "bramble", "sunfish", "coral", "flame"];
|
|
const channels = ["stable", "beta"];
|
|
const delayMs = 1000 * 60 * 5;
|
|
|
|
function updateLink(link, text, url) {
|
|
link.innerText = text;
|
|
link.setAttribute("href", url);
|
|
}
|
|
|
|
async function updateReleases() {
|
|
const requests = [];
|
|
|
|
for (const channel of channels) {
|
|
for (const device of devices) {
|
|
requests.push(fetch(baseUrl + device + "-" + channel).then(response => {
|
|
if (!response.ok) {
|
|
return Promise.reject();
|
|
}
|
|
return response.text();
|
|
}).then(text => {
|
|
const metadata = text.trim().split(" ");
|
|
|
|
const factoryFilename = device + "-factory-" + metadata[0] + ".zip";
|
|
const factoryUrl = baseUrl + factoryFilename;
|
|
|
|
const updateFilename = device + "-ota_update-" + metadata[0] + ".zip";
|
|
const updateUrl = baseUrl + updateFilename;
|
|
|
|
const release = document.getElementById(device + "-" + channel);
|
|
const links = release.getElementsByTagName("a");
|
|
|
|
updateLink(links[1], metadata[0], "#" + metadata[0]);
|
|
updateLink(links[2], factoryFilename, factoryUrl);
|
|
updateLink(links[3], factoryFilename + ".sig", factoryUrl + ".sig");
|
|
updateLink(links[4], updateFilename, updateUrl);
|
|
}));
|
|
}
|
|
}
|
|
|
|
await Promise.allSettled(requests);
|
|
setTimeout(updateReleases, delayMs);
|
|
}
|
|
|
|
setTimeout(updateReleases, delayMs);
|
|
|
|
// @license-end
|