Available versions
@@ -34,55 +24,70 @@
-
-
- {{version}}
-
+ $list
diff --git a/.github/deploy.sh b/.github/deploy.sh index d937661c0f82..5b4b4be4e36b 100644 --- a/.github/deploy.sh +++ b/.github/deploy.sh @@ -25,16 +25,15 @@ if [[ $BETA = "true" ]]; then fi # Generate version index that is shown as root index page -cp util/gh-pages/versions.html out/index.html - -echo "Making the versions.json file" -python3 ./util/versions.py out +python3 ./util/versions.py ./util/gh-pages/versions.html out # Now let's go have some fun with the cloned repo cd out git config user.name "GHA CI" git config user.email "gha@ci.invalid" +git status + if [[ -n $TAG_NAME ]]; then # track files, so that the following check works git add --intent-to-add "$TAG_NAME" @@ -46,8 +45,6 @@ if [[ -n $TAG_NAME ]]; then git add "$TAG_NAME" # Update the symlink git add stable - # Update versions file - git add versions.json git commit -m "Add documentation for ${TAG_NAME} release: ${SHA}" elif [[ $BETA = "true" ]]; then if git diff --exit-code --quiet -- beta/; then diff --git a/util/gh-pages/versions.html b/util/gh-pages/versions.html index 31ce88193295..d38fe39a4640 100644 --- a/util/gh-pages/versions.html +++ b/util/gh-pages/versions.html @@ -1,4 +1,5 @@ +
@@ -7,26 +8,15 @@
-
-
-
-
-
+ .github-corner:hover .octo-arm {
+ animation: octocat-wave 560ms ease-in-out;
+ }
+ @keyframes octocat-wave {
+ 0%,
+ 100% {
+ transform: rotate(0);
+ }
+ 20%,
+ 60% {
+ transform: rotate(-25deg);
+ }
+ 40%,
+ 80% {
+ transform: rotate(10deg);
+ }
+ }
+ @media (max-width: 500px) {
+ .github-corner:hover .octo-arm {
+ animation: none;
+ }
+ .github-corner .octo-arm {
+ animation: octocat-wave 560ms ease-in-out;
+ }
+ }
+
+
diff --git a/util/versions.py b/util/versions.py
index c041fc606a8f..7a21a840a6d9 100755
--- a/util/versions.py
+++ b/util/versions.py
@@ -1,22 +1,22 @@
#!/usr/bin/env python
+from string import Template
+import argparse
import json
-import logging as log
import os
import sys
-log.basicConfig(level=log.INFO, format="%(levelname)s: %(message)s")
-
-
def key(v):
if v == "master":
- return float("inf")
- if v == "stable":
return sys.maxsize
- if v == "beta":
+ if v == "stable":
return sys.maxsize - 1
+ if v == "beta":
+ return sys.maxsize - 2
if v == "pre-1.29.0":
return -1
+ if not v.startswith("rust-"):
+ return None
v = v.replace("rust-", "")
@@ -26,26 +26,27 @@ def key(v):
return s
-
def main():
- if len(sys.argv) < 2:
- log.error("specify output directory")
- return
+ parser = argparse.ArgumentParser()
+ parser.add_argument("input", help="path to the versions.html template", type=argparse.FileType("r"))
+ parser.add_argument("outdir", help="path to write the output HTML")
+ args = parser.parse_args()
- outdir = sys.argv[1]
versions = [
dir
- for dir in os.listdir(outdir)
- if not dir.startswith(".")
- and not dir.startswith("v")
- and os.path.isdir(os.path.join(outdir, dir))
+ for dir in os.listdir(args.outdir)
+ if key(dir) is not None
]
- versions.sort(key=key)
+ versions.sort(key=key, reverse=True)
+ links = [f'{version}' for version in versions]
- with open(os.path.join(outdir, "versions.json"), "w") as fp:
- json.dump(versions, fp, indent=2)
- log.info("wrote JSON for great justice")
+ template = Template(args.input.read())
+ html = template.substitute(list="\n".join(links))
+ path = os.path.join(args.outdir, "index.html")
+ with open(path, "w") as out:
+ out.write(html)
+ print(f"wrote HTML to {path}")
if __name__ == "__main__":
main()