blob: fa26ddddcf5af6470324d2567a1393a779f9f363 [file] [log] [blame]
Gilles Peskine0f4df8f2021-01-18 20:31:07 +01001#!/bin/sh
2
3set -eu
4
5usage () {
6 cat <<EOF
7Usage: $0 PATH_TO_PSA_CRYPTO_API_TREE
8Update the rendered copy of the PSA Cryptography API specification.
9
101. Check out the desired version of the PSA Crypto API specification.
11 git clone https://github.com/ARMmbed/psa-crypto-api
12 git checkout <TAG>
Gilles Peskined108ecd2022-04-12 18:30:58 +0200132. Build the specification and extensions.
Gilles Peskine0f4df8f2021-01-18 20:31:07 +010014 cd psa-crypto-api
15 sudo docker build -t psa_api - <psa-crypto-api/scripts/Dockerfile
Gilles Peskinedf93ecd2022-04-12 18:01:11 +020016 sudo docker run -i -t -u \$(id -u):\$(id -g) -v \$PWD:/var/lib/builds psa_api -c make
Gilles Peskined108ecd2022-04-12 18:30:58 +020017 for d in ext-*; do
18 sudo docker run -i -t -u \$(id -u):\$(id -g) -v \$PWD:/var/lib/builds psa_api -c "make -C $d";
19 done
Gilles Peskine0f4df8f2021-01-18 20:31:07 +010020 cd ..
213. Copy the rendered files.
22 $0 psa-crypto-api
Gilles Peskineb92fd9c2022-04-12 18:28:42 +0200234. If this is a new numbered version:
24 edit docs/psa/index.md # Add the new version
25 make
26 ln -snf <VERSION> docs/latest
275. Commit the changes.
Gilles Peskinec2db5f02021-01-18 20:36:53 +010028 git add docs/html docs/PSA_Cryptography_API_Specification.pdf
Gilles Peskined108ecd2022-04-12 18:30:58 +020029 git add docs
Gilles Peskinec2db5f02021-01-18 20:36:53 +010030 git commit
Gilles Peskine0f4df8f2021-01-18 20:31:07 +010031EOF
32}
33
34if [ $# -ne 1 ] || [ "$1" = "--help" ]; then
35 usage
36 exit $(($# != 1))
37fi
38
Gilles Peskined108ecd2022-04-12 18:30:58 +020039# get_version DIRECTORY [EXTENSION_NAME]
40# --> $version
41get_version () {
42 version=$(sed -n 's/^\(Version[^0-9A-Za-z][^0-9A-Za-z]*\)//; T; y/ /_/; p; q' "$1/sphinx-build/html/index.html")
43 if [ -z "$version" ]; then
44 suffix=
45 if [ -n "$2" ]; then
46 suffix=" in $2"
47 fi
48 echo >&2 "Fatal error: unable to determine the version$suffix."
49 exit 1
50 fi
51 if [ ! -d "docs/$version" ]; then
52 mkdir "docs/$version"
53 cat <<EOF
Gilles Peskine4519de72022-04-07 13:44:25 +020054NOTE: Please update "Past versions" in docs/psa/index.md to add $version
55 then run make.
Gilles Peskined108ecd2022-04-12 18:30:58 +020056EOF
57 if [ -z "$2" ]; then
58 cat <<EOF
Gilles Peskine4519de72022-04-07 13:44:25 +020059NOTE: You may need to update the "latest" symbolic link.
60 ln -snf "$version" docs/latest
61EOF
Gilles Peskined108ecd2022-04-12 18:30:58 +020062 fi
63 fi
64}
Gilles Peskine4519de72022-04-07 13:44:25 +020065
Gilles Peskined108ecd2022-04-12 18:30:58 +020066get_version "$1" ""
Gilles Peskine4519de72022-04-07 13:44:25 +020067rsync -a --delete "$1/sphinx-build/html" "docs/$version/"
68rsync -a "$1/sphinx-build/latex/psa_crypto_api.pdf" "docs/$version/PSA_Cryptography_API_Specification.pdf"
Gilles Peskined108ecd2022-04-12 18:30:58 +020069
70for d in "$1"/ext-*; do
71 get_version "$d" "${d##*/}"
72 rsync -a --delete --include='psa_*.pdf' --exclude='*' "$d/sphinx-build/latex/" "docs/$version/"
73 rsync -a --delete "$d/sphinx-build/html" "docs/$version/"
74done