diff options
author | 0neGal <mail@0negal.com> | 2023-01-31 20:30:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-31 20:30:11 +0100 |
commit | fe0ada0c733687050a6a16d19d45a3de7790de7d (patch) | |
tree | aeb243f4ce55d20117c5fd4c852da9d72c533a4a /docs | |
parent | 9dd72777f685b98951b13020d5bb303549c79161 (diff) | |
download | FlightCore-fe0ada0c733687050a6a16d19d45a3de7790de7d.tar.gz FlightCore-fe0ada0c733687050a6a16d19d45a3de7790de7d.zip |
docs: Redirector to up-to-date releases (#151)
* Add GitHub pages download redirector
Very simply put, this fetches the current release, and translates search
queries like `?appimage` into the download URL for the most recent
.AppImage file, then redirects you to it, effectively downloading it.
* Update download link to use redirector
Now the link doesn't have to be updated every time there's a release!
Diffstat (limited to 'docs')
-rw-r--r-- | docs/index.html | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..737e5ea5 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,64 @@ +<script> +// with this we can very easily fetch the latest version of FlightCore +// and redirect to it, without having to update any version numbers on +// every release, simply change the search query to either "win-setup" +// or "appimage", without a query you will be redirect to the release +// page instead of the download +// +// so generally a request would look like this: +// +// r2northstartools.github.io/FlightCore/index.html?win-setup +// +// or +// +// r2northstartools.github.io/FlightCore/index.html?appimage +// +// and to redirect to the release page: +// +// r2northstartools.github.io/FlightCore/index.html + +(async () => { + // configuration of repo URL + let repo = "FlightCore"; + let author = "R2NorthstarTools"; + let api = "https://api.github.com/repos"; + + // actual API request + let release = await (await fetch(`${api}/${author}/${repo}/releases/latest`)).json(); + let assets = release.assets; + + // this takes in a regEx and if something matches in the release's + // files, it'll return the download link to it + let get = (asset) => { + for (let i in assets) { + if (assets[i].name.match(asset)) { + return assets[i].browser_download_url; + } + } + } + + let url; + + // this refers to the actual search query, i.e "<page>?appimage" + let search = location.search.replace(/^\?/, ""); + switch(search) { + case "win-zip": // FlightCore_<version>_x64_en-US.zip + url = get(/FlightCore_.*\.zip$/); + break; + case "win-setup": // FlightCore_<version>_x64_en-US.msi + url = get(/FlightCore_.*\.msi$/); + break; + + case "appimage": // flight-core_<version>_amd64.AppImage + url = get(/flight-core_.*\.AppImage$/); + break; + + default: // default to release page + url = release.html_url; + break; + } + + // redirect to page + location.replace(url); +})() +</script> |