Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

List all downloads in a machine-readable format #608

Closed
noidexe opened this issue Mar 29, 2023 · 6 comments
Closed

List all downloads in a machine-readable format #608

noidexe opened this issue Mar 29, 2023 · 6 comments

Comments

@noidexe
Copy link

noidexe commented Mar 29, 2023

Apps like Hourglass by @jameswestman, Godot Manager by @eumario and my own Godot Version Manager all offer a way to download any Godot version and assign it to a project.

Right now Godot Manager and Godot Version Manger are scraping https://downloads.tuxfamily.org/godotengine/ to build our download database but it feels really hacky. You need to rely on folder/file name to get metadata like version number, rc/beta/stable status, platform, etc. Hourglass, on the other hand, is updating a versions.cfg file which means new versions are not instantly available on the app.

Github Releases is somewhat viable and some of the aforementioned projects offer it as a mirror. Unfortunately it only contains stable releases.

A /downloads.json file containing a json dictionary would be really useful.
I imagine the structure could be something like this:

{
    "4.0.1-rc2": {
        "date": "2023-03-19T17:03:00Z",
        "status": "Release Candidate",
        "platforms": {
            "linux-32": {
                "download-url": "https://downloads.tuxfamily.org/godotengine/4.0.1/rc2/Godot_v4.0.1-rc2_linux.x86_32.zip",
                "sha512" : "dc2d795d5e63d66157ccdcef0ee8f5efde0cc6b7a4380ff3cf08ef8c74024be945f476bd4d1d1ba1ad3aea962de3ed05e936bde0ff560135fcd033c328797b21"
            },
            "linux-64": {
                ...
            },
            "macos-universal": {
                ...
            },
            ...
        }
    },
    ...
}

There's probably a better way to structure it but just to give a general idea.

@YuriSizov
Copy link
Contributor

The website has versions.yml, and it will have every stable release listed in it at some point, as well as pre-release entries for current testing builds. But I don't think we will be adding old pre-releases, it's just too much data to track in that file, and it's not useful to most beyond the testing window.

@YuriSizov
Copy link
Contributor

So versions.yml now has all pre-releases https://github.com/godotengine/godot-website/blob/master/_data/versions.yml
But what you may want to use instead (or alongside) is the godot-builds repo which has filenames and sha checksums for each release in the JSON format where available (there are no filenames for releases without those, but that can be addressed).

This doesn't look ideal, I admit, but these files shouldn't go anywhere in the foreseeable future. So you should be able to rely on them until we have something more organized.

@noidexe
Copy link
Author

noidexe commented Sep 20, 2023

Thanks! Yes, The new godot-builds repo is extremely useful as Github offers both a json-api and better download speeds. versions.yml still looks pretty useful as a way to get the release notes.

As far as I'm concerned this issue can be closed

@YuriSizov
Copy link
Contributor

Very well! :)

@eumario
Copy link

eumario commented Oct 14, 2023

I just wanted to check, cause there was a bug opened on godot-builds repository, and I wanted to make sure I had clarification. Is there a break in the build process, that is not uploading releases to tuxfamily, or is Godot moving away from Tuxfamily, and strictly using godot-builds for the mirror now?

@akien-mga
Copy link
Member

TuxFamily has been out of order the whole week, so we couldn't upload the builds there.

We'll upload them when we can, but from now on the reference should be https://github.com/godotengine/godot-builds.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants