Generate the mirrorlist based on static version data

This commit is contained in:
Yuri Sizov
2023-06-19 14:41:47 +02:00
parent 8bd9ea96b3
commit 69841fad7a
10 changed files with 767 additions and 50 deletions

View File

@@ -10,7 +10,6 @@ GEM
http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.15.5)
ffi (1.15.5-x64-mingw-ucrt)
ffi (1.15.5-x64-unknown)
forwardable-extended (2.6.0)
http_parser.rb (0.8.0)
@@ -68,7 +67,7 @@ GEM
PLATFORMS
arm64-darwin-22
x64-mingw-ucrt
x64-unknown
x64-unknown
x86_64-linux
@@ -81,4 +80,4 @@ DEPENDENCIES
webrick (~> 1.7)
BUNDLED WITH
2.4.2
2.4.13

View File

@@ -191,6 +191,25 @@ There are two additional files providing data for download pages and links: `_da
They define descriptions, tags, and filename slugs for all downloadable builds, as well as order for downloads on
some pages.
### Adding a mirrorlist host
If a new host needs to be supported by the mirrorlist, it needs to be added in a few places. For the data side of
things you need to update `_data/mirrorlist_configs.yml` and add another record for the major-minor version code.
```
- name: "4.1"
stable: [ "github", "tuxfamily" ]
preview: [ "github_builder", "tuxfamily" ]
```
The `stable` key refers to hosts available for the stable release of that version, while the `preview` key refers
to all pre-releases and dev snapshots, which typically share all their characteristics. If in future there is a
need for finer control, some overrides system needs to be implemented.
For the logic side of things the new host needs to be supported by the `_plugins/make_download.rb` script. Refer
to how other hosts are handled in that file and do the necessary adjustments. We assume that the final filenames
are standard across all hosts, so `_data/download_configs.yml` is respected.
## Resources
- Join the discussion on Godot Contributors Chat in the [#website](https://chat.godotengine.org/channel/website)

View File

@@ -32,31 +32,30 @@ future: true
defaults:
- scope:
path: ""
type: "article"
values:
layout: "article"
og_type: "article"
- scope:
path: ""
type: "event"
values:
layout: "event"
- scope:
path: ""
type: "showcase"
values:
layout: "showcase-item"
- scope:
path: ""
type: "download"
values:
layout: "download"
- scope:
path: ""
type: "download_3"
values:
layout: "download-3"
- scope:
type: "mirrorlist"
values:
layout: "mirrorlist"
# Plugins
plugins:
@@ -71,56 +70,20 @@ default_lang: "en"
# Pagination (used by the blog)
pagination:
# Site-wide kill switch, disabled here it doesn't run at all
enabled: true
# Set to 'true' to enable pagination debugging. This can be enabled in the site config or only for individual pagination pages
debug: false
# The default document collection to paginate if nothing is specified ('posts' is default)
collection: "article"
# How many objects per paginated page, used to be `paginate` (default: 0, means all)
per_page: 24
# The permalink structure for the paginated pages (this can be any level deep)
permalink: "/:num/" # Pages are index.html inside this folder (default)
#permalink: '/page/:num.html' # Pages are simple html files
#permalink: '/page/:num' # Pages are html files, linked jekyll extensionless permalink style.
# Optional the title format for the paginated pages (supports :title for original page title, :num for pagination page number, :max for total number of pages)
title: ":title - Page :num"
# Limit how many pagenated pages to create (default: 0, means all)
limit: 0
# Optional, defines the field that the posts should be sorted on (omit to default to 'date')
sort_field: "date"
# Optional, sorts the posts in reverse order (omit to default decending or sort_reverse: true)
sort_reverse: true
# Optional, the default category to use, omit or just leave this as 'posts' to get a backwards-compatible behavior (all posts)
category: "posts"
# Optional, the default tag to use, omit to disable
tag: ""
# Optional, the default locale to use, omit to disable (depends on a field 'locale' to be specified in the posts,
# in reality this can be any value, suggested are the Microsoft locale-codes (e.g. en_US, en_GB) or simply the ISO-639 language code )
locale: ""
# Optional,omit or set both before and after to zero to disable.
# Controls how the pagination trail for the paginated pages look like.
trail:
before: 2
after: 2
# Optional, the default file extension for generated pages (e.g html, json, xml).
# Internally this is set to html by default
extension: html
# Optional, the default name of the index file for generated pages (e.g. 'index.html')
# Without file extension
indexpage: "index"
############################################################
title: ":title - Page :num"
permalink: "/:num/"
category: "posts"
tag: ""
locale: ""

View File

@@ -50,4 +50,21 @@ defaults:
aar_library: mono.release.aar
2:
templates: export_templates.tpz
editor:
linux.64: x11.64.zip
linux.32: x11.32.zip
macos.universal: osx.fat.zip
windows.64: win64.exe.zip
windows.32: win32.exe.zip
linux_server.64: linux_server.64.zip
1:
templates: export_templates.tpz
editor:
linux.64: x11.64.zip
linux.32: x11.32.zip
macos.universal: osx32.zip
windows.64: win64.exe.zip
windows.32: win32.exe.zip
linux_server.64: linux_server.64.zip

View File

@@ -0,0 +1,48 @@
hosts:
- name: "github"
title: "Official GitHub Releases mirror"
- name: "github_builder"
title: "Official GitHub Releases mirror"
- name: "tuxfamily"
title: "Official TuxFamily mirror"
defaults:
- name: "4.1"
stable: [ "github", "tuxfamily" ]
preview: [ "github_builder", "tuxfamily" ]
- name: "4.0"
stable: [ "github", "tuxfamily" ]
preview: [ "github_builder", "tuxfamily" ]
- name: "3.6"
stable: [ "github", "tuxfamily" ]
preview: [ "github_builder", "tuxfamily" ]
- name: "3.5"
stable: [ "github", "tuxfamily" ]
preview: [ "tuxfamily" ]
- name: "3.4"
stable: [ "github", "tuxfamily" ]
preview: [ "tuxfamily" ]
- name: "3.3"
stable: [ "github", "tuxfamily" ]
preview: [ "tuxfamily" ]
- name: "3.2"
stable: [ "github", "tuxfamily" ]
preview: [ "tuxfamily" ]
- name: "3.1"
stable: [ "github", "tuxfamily" ]
preview: [ "tuxfamily" ]
- name: "3.0"
stable: [ "tuxfamily" ]
preview: [ "tuxfamily" ]
- name: "2.1"
stable: [ "tuxfamily" ]
preview: [ "tuxfamily" ]
- name: "2.0"
stable: [ "tuxfamily" ]
preview: [ "tuxfamily" ]
- name: "1.1"
stable: [ "tuxfamily" ]
preview: [ "tuxfamily" ]
- name: "1.0"
stable: [ "tuxfamily" ]
preview: [ "tuxfamily" ]

View File

@@ -2,63 +2,294 @@
flavor: "beta2"
release_date: "14 June 2023"
release_notes: "/article/dev-snapshot-godot-4-1-beta-2/"
releases:
- name: "beta1"
release_date: "8 June 2023"
release_notes: "/article/dev-snapshot-godot-4-1-beta-1/"
- name: "dev4"
release_date: "1 June 2023"
release_notes: "/article/dev-snapshot-godot-4-1-dev-4/"
- name: "dev3"
release_date: "25 May 2023"
release_notes: "/article/dev-snapshot-godot-4-1-dev-3/"
- name: "dev2"
release_date: "09 May 2023"
release_notes: "/article/dev-snapshot-godot-4-1-dev-2/"
- name: "dev1"
release_date: "21 April 2023"
release_notes: "/article/dev-snapshot-godot-4-1-dev-1/"
- name: "4.0.3"
flavor: "stable"
release_date: "19 May 2023"
release_notes: "/article/maintenance-release-godot-4-0-3/"
featured: "4"
releases:
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-4-0-3-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-4-0-3-rc-1/"
- name: "4.0.2"
flavor: "stable"
release_date: "4 April 2023"
release_notes: "/article/maintenance-release-godot-4-0-2/"
releases:
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-4-0-2-rc-1/"
- name: "4.0.1"
flavor: "stable"
release_date: "20 March 2023"
release_notes: "/article/maintenance-release-godot-4-0-1/"
releases:
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-4-0-1-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-4-0-1-rc-1/"
- name: "4.0"
flavor: "stable"
release_date: "1 March 2023"
release_notes: "/article/godot-4-0-sets-sail/"
releases:
- name: "rc6"
release_date: ""
release_notes: "/article/release-candidate-godot-4-0-rc-6/"
- name: "rc5"
release_date: ""
release_notes: "/article/release-candidate-godot-4-0-rc-5/"
- name: "rc4"
release_date: ""
release_notes: "/article/release-candidate-godot-4-0-rc-4/"
- name: "rc3"
release_date: ""
release_notes: "/article/release-candidate-godot-4-0-rc-3/"
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-4-0-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-4-0-rc-1/"
- name: "beta17"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-17/"
- name: "beta16"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-16/"
- name: "beta15"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-15/"
- name: "beta14"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-14/"
- name: "beta13"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-13/"
- name: "beta12"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-12/"
- name: "beta11"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-11/"
- name: "beta10"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-10/"
- name: "beta9"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-9/"
- name: "beta8"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-8/"
- name: "beta7"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-7/"
- name: "beta6"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-6/"
- name: "beta5"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-5/"
- name: "beta4"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-4/"
- name: "beta3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-3/"
- name: "beta2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-2/"
- name: "beta1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-beta-1/"
- name: "alpha17"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-17/"
- name: "alpha16"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-16/"
- name: "alpha15"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-15/"
- name: "alpha14"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-14/"
- name: "alpha13"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-13/"
- name: "alpha12"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-12/"
- name: "alpha11"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-11/"
- name: "alpha10"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-10/"
- name: "alpha9"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-9/"
- name: "alpha8"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-8/"
- name: "alpha7"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-7/"
- name: "alpha6"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-6/"
- name: "alpha5"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-5/"
- name: "alpha4"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-4/"
- name: "alpha3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-3/"
- name: "alpha2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-2/"
- name: "alpha1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-4-0-alpha-1/"
- name: "3.6"
flavor: "beta2"
release_date: "25 May 2023"
release_notes: "/article/dev-snapshot-godot-3-6-beta-2/"
releases:
- name: "beta1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-6-beta-1/"
- name: "3.5.2"
flavor: "stable"
release_date: "7 March 2023"
release_notes: "/article/maintenance-release-godot-3-5-2/"
featured: "3"
releases:
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-5-2-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-5-2-rc-1/"
- name: "3.5.1"
flavor: "stable"
release_date: "28 September 2022"
release_notes: "/article/maintenance-release-godot-3-5-1/"
releases:
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-5-1-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-5-1-rc-1/"
- name: "3.5"
flavor: "stable"
release_date: ""
release_notes: "/article/godot-3-5-cant-stop-wont-stop/"
releases:
- name: "rc8"
release_date: ""
release_notes: "/article/release-candidate-godot-3-5-rc-8/"
- name: "rc7"
release_date: ""
release_notes: "/article/release-candidate-godot-3-5-rc-7/"
- name: "rc6"
release_date: ""
release_notes: "/article/release-candidate-godot-3-5-rc-6/"
- name: "rc5"
release_date: ""
release_notes: "/article/release-candidate-godot-3-5-rc-5/"
- name: "rc4"
release_date: ""
release_notes: "/article/release-candidate-godot-3-5-rc-4/"
- name: "rc3"
release_date: ""
release_notes: "/article/release-candidate-godot-3-5-rc-3/"
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-3-5-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-5-rc-1/"
- name: "beta5"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-5-beta-5/"
- name: "beta4"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-5-beta-4/"
- name: "beta3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-5-beta-3/"
- name: "beta2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-5-beta-2/"
- name: "beta1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-5-beta-1/"
- name: "3.4.5"
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-4-5/"
releases:
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-4-5-rc-1/"
- name: "3.4.4"
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-4-4/"
releases:
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-4-4-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-4-4-rc-1/"
- name: "3.4.3"
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-4-3/"
releases:
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-4-3-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-4-3-rc-1/"
- name: "3.4.2"
flavor: "stable"
@@ -69,21 +300,70 @@
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-4-1/"
releases:
- name: "rc3"
release_date: ""
release_notes: "/article/release-candidate-godot-3-4-1-rc-3/"
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-4-1-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-4-1-rc-1/"
- name: "3.4"
flavor: "stable"
release_date: ""
release_notes: "/article/godot-3-4-is-released/"
releases:
- name: "rc3"
release_date: ""
release_notes: "/article/release-candidate-godot-3-4-rc-3/"
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-4-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-4-rc-1/"
- name: "beta6"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-4-beta-6/"
- name: "beta5"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-4-beta-5/"
- name: "beta4"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-4-beta-4/"
- name: "beta3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-4-beta-3/"
- name: "beta2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-4-beta-2/"
- name: "beta1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-4-beta-2/"
- name: "3.3.4"
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-3-4/"
releases:
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-3-4-rc-1/"
- name: "3.3.3"
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-3-3/"
releases:
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-3-3-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-3-3-rc-1/"
- name: "3.3.2"
flavor: "stable"
@@ -94,46 +374,262 @@
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-3-1/"
releases:
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-3-1-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-3-1-rc-1/"
- name: "3.3"
flavor: "stable"
release_date: ""
release_notes: "/article/godot-3-3-has-arrived/"
releases:
- name: "rc9"
release_date: ""
release_notes: "/article/release-candidate-godot-3-3-rc-9/"
- name: "rc8"
release_date: ""
release_notes: "/article/release-candidate-godot-3-3-rc-8/"
- name: "rc7"
release_date: ""
release_notes: "/article/release-candidate-godot-3-3-rc-7/"
- name: "rc6"
release_date: ""
release_notes: "/article/release-candidate-godot-3-3-rc-6/"
- name: "rc5"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-4-rc-5/"
- name: "rc4"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-4-rc-4/"
- name: "rc3"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-4-rc-3/"
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-4-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-4-rc-1/"
- name: "beta6"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-4-beta-6/"
- name: "beta5"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-4-beta-5/"
- name: "beta4"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-4-beta-4/"
- name: "beta3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-4-beta-3/"
- name: "beta2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-4-beta-2/"
- name: "beta1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-4-beta-1/"
- name: "3.2.3"
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-2-3/"
releases:
- name: "rc6"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-3-rc-6/"
- name: "rc5"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-3-rc-5/"
- name: "rc4"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-3-rc-4/"
- name: "rc3"
release_date: ""
release_notes: "/article/release-candidate-3-2-3-rc-3/"
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-3-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-3-rc-1/"
- name: "beta1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-3-beta-1/"
- name: "3.2.2"
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-2-2/"
releases:
- name: "rc4"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-2-rc-4/"
- name: "rc3"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-2-rc-3/"
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-2-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-2-rc-1/"
- name: "beta4"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-2-beta-4/"
- name: "beta3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-2-beta-3/"
- name: "beta2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-2-beta-2/"
- name: "beta1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-2-beta-1/"
- name: "3.2.1"
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-2-1/"
releases:
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-1-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-1-rc-1/"
- name: "3.2"
flavor: "stable"
release_date: ""
release_notes: "/article/here-comes-godot-3-2/"
releases:
- name: "rc4"
release_date: ""
release_notes: "/article/release-candidate-3-2-rc-4/"
- name: "rc3"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-rc-3/"
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-2-rc-1/"
- name: "beta6"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-beta-6/"
- name: "beta5"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-beta-5/"
- name: "beta4"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-beta-4/"
- name: "beta3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-beta-3/"
- name: "beta2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-beta-2/"
- name: "beta1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-beta-1/"
- name: "alpha3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-alpha-3/"
- name: "alpha2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-alpha-2/"
- name: "alpha1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-2-alpha-1/"
- name: "alpha0-unofficial"
release_date: ""
release_notes: ""
- name: "3.1.2"
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-1-2/"
releases:
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-1-2-rc-1/"
- name: "3.1.1"
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-1-1/"
releases:
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-1-1-rc-1/"
- name: "3.1"
flavor: "stable"
release_date: ""
release_notes: "/article/godot-3-1-released/"
releases:
- name: "rc3"
release_date: ""
release_notes: "/article/release-candidate-godot-3-1-rc-3/"
- name: "rc2"
release_date: ""
release_notes: "/article/release-candidate-godot-3-1-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/release-candidate-godot-3-1-rc-1/"
- name: "beta11"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-beta-11/"
- name: "beta10"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-beta-10/"
- name: "beta9"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-beta-9/"
- name: "beta8"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-beta-8/"
- name: "beta7"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-beta-7/"
- name: "beta6"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-beta-6/"
- name: "beta5"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-beta-5/"
- name: "beta4"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-beta-4/"
- name: "beta3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-beta-3/"
- name: "beta2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-beta-2/"
- name: "beta1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-beta-1/"
- name: "alpha5"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-alpha-5/"
- name: "alpha4"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-alpha-4/"
- name: "alpha3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-alpha-3/"
- name: "alpha2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-alpha-2/"
- name: "alpha1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-1-alpha-1/"
- name: "3.0.6"
flavor: "stable"
@@ -154,6 +650,16 @@
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-0-3/"
releases:
- name: "rc3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-0-3-rc-3/"
- name: "rc2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-0-3-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-0-3-rc-1/"
- name: "3.0.2"
flavor: "stable"
@@ -164,16 +670,46 @@
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-3-0-1/"
releases:
- name: "rc1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-0-1-rc1/"
- name: "3.0"
flavor: "stable"
release_date: ""
release_notes: "/article/godot-3-0-released/"
releases:
- name: "rc3"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-0-rc-3/"
- name: "rc2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-0-rc-2/"
- name: "rc1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-0-rc-1/"
- name: "beta2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-0-beta-2/"
- name: "beta1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-0-beta-1/"
- name: "alpha2"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-0-alpha-2/"
- name: "alpha1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-3-0-alpha-1/"
- name: "2.1.6"
flavor: "stable"
release_date: ""
release_notes: "/article/maintenance-release-godot-2-1-6/"
releases:
- name: "rc1"
release_date: ""
release_notes: "/article/dev-snapshot-godot-2-1-6-rc-1/"
- name: "2.1.5"
flavor: "stable"

10
_layouts/mirrorlist.json Normal file
View File

@@ -0,0 +1,10 @@
{
"mirrors": [
{% for mirror in page.version_mirrors %}
{
"name": "{{ mirror.name }}",
"url": "{{ mirror.url }}"
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
}

View File

@@ -4,6 +4,7 @@
HOST_TUXFAMILY = "https://downloads.tuxfamily.org/godotengine"
HOST_GITHUB = "https://github.com/godotengine/godot/releases/download"
HOST_GITHUB_BUILDER = "https://github.com/GodotBuilder/godot-builds/releases/download"
module MakeDownloadFilter
def get_download_platforms(input, mono = false)
@@ -87,9 +88,11 @@ module MakeDownloadFilter
if host == "github"
return "#{HOST_GITHUB}/#{version_name}-#{version_flavor}/#{download_file}"
elsif host == "github_builder"
return "#{HOST_GITHUB_BUILDER}/#{version_name}-prerelease-templates/#{download_file}"
elsif host == "tuxfamily"
if version_flavor == "stable"
return "#{HOST_TUXFAMILY}/#{version_name}/#{mono_slug}/#{download_file}"
return "#{HOST_TUXFAMILY}/#{version_name}#{mono_slug}/#{download_file}"
else
return "#{HOST_TUXFAMILY}/#{version_name}/#{version_flavor}#{mono_slug}/#{download_file}"
end

View File

@@ -0,0 +1,122 @@
module MirrorlistGeneratorPlugin
class MirrorlistGenerator < Jekyll::Generator
safe true
def generate(site)
site.data["versions"].each do |version|
# Generate files for the current main flavor (stable or latest pre-release).
site.pages << MirrorlistPage.new(site, version, false)
site.pages << MirrorlistPage.new(site, version, true)
# Iterate through previous releases and generate files for them as well.
if version.key?("releases")
version["releases"].each do |release|
prerelease = {
'name' => version["name"],
'flavor' => release["name"]
}
site.pages << MirrorlistPage.new(site, prerelease, false)
site.pages << MirrorlistPage.new(site, prerelease, true)
end
end
end
end
end
class MirrorlistPage < Jekyll::Page
def initialize(site, version, mono)
# Configure static information and path.
@site = site
@base = site.source
@dir = 'mirrorlist'
# Generate the version identificator.
version_name = version["name"]
version_flavor = version["flavor"]
version_id = "#{version_name}.#{version_flavor}"
if version_name == "3.0" # Hack for the only version before the naming scheme has been changed.
version_id = "#{version_name}-#{version_flavor}"
end
if mono
version_id = "#{version_id}.mono"
end
version_bits = version_name.split(".")
version_majmin = "#{version_bits[0]}.#{version_bits[1]}"
# Configure the permalink information.
@basename = version_id
@ext = '.json'
@name = "#{version_id}.json"
# Generate the list of mirrors.
mirrors = []
mirrorlist_configs = site.data["mirrorlist_configs"]
mirrorlist_hosts = mirrorlist_configs["hosts"]
version_defaults = mirrorlist_configs["defaults"].find { |config| config["name"] == version_majmin }
unless version_defaults.nil?
mirror_hosts = version_defaults["stable"]
unless version_flavor == "stable"
mirror_hosts = version_defaults["preview"]
end
mirror_hosts.each do |host_name|
mirror_host = mirrorlist_hosts.find { |host| host["name"] == host_name }
mirror_url = make_download(version, mono, host_name)
unless mirror_url == "#"
mirror = { 'name' => mirror_host["title"], 'url' => mirror_url }
mirrors.push(mirror)
end
end
else
mirror_host = mirrorlist_hosts.find { |host| host["name"] == "tuxfamily" }
mirror_url = make_download(version, mono, "tuxfamily")
unless mirror_url == "#"
mirror = { 'name' => mirror_host["title"], 'url' => mirror_url }
mirrors.push(mirror)
end
end
# Initialize data hash to pass objects to the template.
@data = {
'version_mirrors' => mirrors
}
# Defaults can be configured via the `_config.yml`, same as with normal
# collections.
data.default_proc = proc do |_, key|
site.frontmatter_defaults.find(relative_path, :mirrorlist, key)
end
end
# This is a hack to generate the URL from code. I don't know a better way to hook into Liquid and use its
# registered filters. But it's short and sweet enough for now (or for... ever).
def make_download(version, mono, host)
template = Liquid::Template.parse('{{ version | make_download: "templates", mono, host }}')
assigns = {
'version' => version,
'mono' => mono,
'host' => host
}
# We need to pass the site reference to registers because make_downloads relies on this context being
# present.
return template.render(assigns, registers: { site: @site })
end
def url_placeholders
{
:path => @dir,
:basename => basename,
:output_ext => output_ext,
}
end
end
end

0
build-and-watch.sh Normal file → Executable file
View File