From 68e2054fc4d52fb578f78057290aef678a64ff9c Mon Sep 17 00:00:00 2001
From: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
Date: Tue, 10 Jan 2023 08:20:57 +0000
Subject: [PATCH] netlify: generate all redirects automatically
---
.netlify/_redirects | 71 ------------------------------------
.netlify/build.sh | 12 +++---
.netlify/create_redirects.py | 20 ----------
Releasing.md | 4 +-
4 files changed, 8 insertions(+), 99 deletions(-)
delete mode 100644 .netlify/_redirects
delete mode 100755 .netlify/create_redirects.py
diff --git a/.netlify/_redirects b/.netlify/_redirects
deleted file mode 100644
index 228bdc03..00000000
--- a/.netlify/_redirects
+++ /dev/null
@@ -1,71 +0,0 @@
-/0.1.0/doc/* https://docs.rs/pyo3/0.1.0/:splat
-/0.2.0/doc/* https://docs.rs/pyo3/0.2.0/:splat
-/0.2.1/doc/* https://docs.rs/pyo3/0.2.1/:splat
-/0.2.2/doc/* https://docs.rs/pyo3/0.2.2/:splat
-/pyo3-derive-backend-0.6.0/doc/* https://docs.rs/pyo3/pyo3-derive-backend-0.6.0/:splat
-/v0.10.0/doc/* https://docs.rs/pyo3/0.10.0/:splat
-/v0.10.1/doc/* https://docs.rs/pyo3/0.10.1/:splat
-/v0.11.0/doc/* https://docs.rs/pyo3/0.11.0/:splat
-/v0.11.1/doc/* https://docs.rs/pyo3/0.11.1/:splat
-/v0.12.0/doc/* https://docs.rs/pyo3/0.12.0/:splat
-/v0.12.1/doc/* https://docs.rs/pyo3/0.12.1/:splat
-/v0.12.2/doc/* https://docs.rs/pyo3/0.12.2/:splat
-/v0.12.3/doc/* https://docs.rs/pyo3/0.12.3/:splat
-/v0.12.4/doc/* https://docs.rs/pyo3/0.12.4/:splat
-/v0.13.0/doc/* https://docs.rs/pyo3/0.13.0/:splat
-/v0.13.1/doc/* https://docs.rs/pyo3/0.13.1/:splat
-/v0.13.2/doc/* https://docs.rs/pyo3/0.13.2/:splat
-/v0.14.0/doc/* https://docs.rs/pyo3/0.14.0/:splat
-/v0.14.1/doc/* https://docs.rs/pyo3/0.14.1/:splat
-/v0.14.2/doc/* https://docs.rs/pyo3/0.14.2/:splat
-/v0.14.3/doc/* https://docs.rs/pyo3/0.14.3/:splat
-/v0.14.4/doc/* https://docs.rs/pyo3/0.14.4/:splat
-/v0.14.5/doc/* https://docs.rs/pyo3/0.14.5/:splat
-/v0.15.0/doc/* https://docs.rs/pyo3/0.15.0/:splat
-/v0.15.1/doc/* https://docs.rs/pyo3/0.15.1/:splat
-/v0.15.2/doc/* https://docs.rs/pyo3/0.15.2/:splat
-/v0.16.0/doc/* https://docs.rs/pyo3/0.16.0/:splat
-/v0.16.1/doc/* https://docs.rs/pyo3/0.16.1/:splat
-/v0.16.2/doc/* https://docs.rs/pyo3/0.16.2/:splat
-/v0.16.3/doc/* https://docs.rs/pyo3/0.16.3/:splat
-/v0.16.4/doc/* https://docs.rs/pyo3/0.16.4/:splat
-/v0.16.5/doc/* https://docs.rs/pyo3/0.16.5/:splat
-/v0.16.6/doc/* https://docs.rs/pyo3/0.16.6/:splat
-/v0.17.0/doc/* https://docs.rs/pyo3/0.17.0/:splat
-/v0.17.1/doc/* https://docs.rs/pyo3/0.17.1/:splat
-/v0.17.2/doc/* https://docs.rs/pyo3/0.17.2/:splat
-/v0.17.3/doc/* https://docs.rs/pyo3/0.17.3/:splat
-/v0.2.3/doc/* https://docs.rs/pyo3/0.2.3/:splat
-/v0.2.4/doc/* https://docs.rs/pyo3/0.2.4/:splat
-/v0.2.5/doc/* https://docs.rs/pyo3/0.2.5/:splat
-/v0.2.6/doc/* https://docs.rs/pyo3/0.2.6/:splat
-/v0.2.7/doc/* https://docs.rs/pyo3/0.2.7/:splat
-/v0.3.0/doc/* https://docs.rs/pyo3/0.3.0/:splat
-/v0.3.1/doc/* https://docs.rs/pyo3/0.3.1/:splat
-/v0.3.2/doc/* https://docs.rs/pyo3/0.3.2/:splat
-/v0.4.0/doc/* https://docs.rs/pyo3/0.4.0/:splat
-/v0.4.1/doc/* https://docs.rs/pyo3/0.4.1/:splat
-/v0.5.0/doc/* https://docs.rs/pyo3/0.5.0/:splat
-/v0.5.0-alpha.2/doc/* https://docs.rs/pyo3/0.5.0-alpha.2/:splat
-/v0.5.0-alpha.3/doc/* https://docs.rs/pyo3/0.5.0-alpha.3/:splat
-/v0.5.1/doc/* https://docs.rs/pyo3/0.5.1/:splat
-/v0.5.2/doc/* https://docs.rs/pyo3/0.5.2/:splat
-/v0.5.3/doc/* https://docs.rs/pyo3/0.5.3/:splat
-/v0.5.4/doc/* https://docs.rs/pyo3/0.5.4/:splat
-/v0.6.0/doc/* https://docs.rs/pyo3/0.6.0/:splat
-/v0.6.0-alpha.1/doc/* https://docs.rs/pyo3/0.6.0-alpha.1/:splat
-/v0.6.0-alpha.2/doc/* https://docs.rs/pyo3/0.6.0-alpha.2/:splat
-/v0.6.0-alpha.3/doc/* https://docs.rs/pyo3/0.6.0-alpha.3/:splat
-/v0.6.0-alpha.4/doc/* https://docs.rs/pyo3/0.6.0-alpha.4/:splat
-/v0.7.0/doc/* https://docs.rs/pyo3/0.7.0/:splat
-/v0.7.0-alpha.1/doc/* https://docs.rs/pyo3/0.7.0-alpha.1/:splat
-/v0.8.0/doc/* https://docs.rs/pyo3/0.8.0/:splat
-/v0.8.1/doc/* https://docs.rs/pyo3/0.8.1/:splat
-/v0.8.2/doc/* https://docs.rs/pyo3/0.8.2/:splat
-/v0.8.3/doc/* https://docs.rs/pyo3/0.8.3/:splat
-/v0.8.4/doc/* https://docs.rs/pyo3/0.8.4/:splat
-/v0.8.5/doc/* https://docs.rs/pyo3/0.8.5/:splat
-/v0.9.0/doc/* https://docs.rs/pyo3/0.9.0/:splat
-/v0.9.0-alpha.1/doc/* https://docs.rs/pyo3/0.9.0-alpha.1/:splat
-/v0.9.1/doc/* https://docs.rs/pyo3/0.9.1/:splat
-/v0.9.2/doc/* https://docs.rs/pyo3/0.9.2/:splat
diff --git a/.netlify/build.sh b/.netlify/build.sh
index 737c2640..7ff52bb3 100755
--- a/.netlify/build.sh
+++ b/.netlify/build.sh
@@ -16,18 +16,20 @@ mv pyo3-gh-pages netlify_build
## Configure netlify _redirects file
-# TODO: have some better system to automatically generate this on build rather
-# than check this in to the repo
-cp .netlify/_redirects netlify_build/
+# Add redirect for each documented version
+for d in netlify_build/v*; do
+ version="${d/netlify_build\/v/}"
+ echo "/v$version/doc/* https://docs.rs/pyo3/$version/:splat" >> netlify_build/_redirects
+done
# Add latest redirect
echo "/latest/* /v${PYO3_VERSION}/:splat" >> netlify_build/_redirects
## Add landing page redirect
if [ "${CONTEXT}" == "deploy-preview" ]; then
- echo "" > netlify_build/index.html
+ echo "/ /main/" >> netlify_build/_redirects
else
- echo "" > netlify_build/index.html
+ echo "/ /v${PYO3_VERSION}/>" >> netlify_build/_redirects
fi
## Generate towncrier release notes
diff --git a/.netlify/create_redirects.py b/.netlify/create_redirects.py
deleted file mode 100755
index c4f5834c..00000000
--- a/.netlify/create_redirects.py
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env python
-"""Generates _redirects file for netlify.
-
-Run this and write output to .netlify/_redirects and check into
-the PyO3 repository.
-"""
-
-import subprocess
-
-
-def main() -> None:
- versions = subprocess.check_output(["git", "tag"], text=True).splitlines()
- for version in versions:
- version_without_v = version.lstrip("v")
- # redirect doc requests to docs.rs
- print(f"/{version}/doc/* https://docs.rs/pyo3/{version_without_v}/:splat")
-
-
-if __name__ == "__main__":
- main()
diff --git a/Releasing.md b/Releasing.md
index 8f7b39de..29abdd5f 100644
--- a/Releasing.md
+++ b/Releasing.md
@@ -13,9 +13,7 @@ Follow the process below to update all required pieces to bump the version. All
- `pre-script.rhai` templates for the examples.
- `[towncrier]` section in `pyproject.toml`.
- Places where you need to be a bit careful:
- - Add _new_ lines to the netlify `_redirects` file rather than replacing the existing ones.
- - Make sure not to modify the CHANGELOG during this step!
+ Make sure not to modify the CHANGELOG during this step!
2. Run `towncrier build` to generate the CHANGELOG. The version used by `towncrier` should automatically be correct because of the update to `pyproject.toml` in step 1.