mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-03-05 16:36:19 +02:00
Before we would run `mdbook test` using the current Markdown sources. This is subtly wrong: we publish the course using back-dated sources, so we should therefore also run the tests using the same sources (this ensures that the code snippets actually work). After this commit, all translatable content lives in exactly two directories: - `src/` - `third_party/` We need to restore both directories when testing and when publishing. This ensures consistency in the Markdown text and in the included source code. A new `.github/workflows/build.sh` script takes care of preparing the two directories according to the date in the PO file (if any). To ensure we can restore all of `third_party/` to an old commit, the non-changing `third_party/mdbook/book.js` file has been moved to `theme/book.js`. The file is generated by `mdbook init --theme`, making it suitable for modification by the user (us). Symlinks have been added to `third_party/mdbook/` to indicate that the files ultimately came from upstream.
38 lines
1.4 KiB
Bash
Executable File
38 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/bash
|
|
set -Eeuo pipefail
|
|
|
|
# Usage: build.sh <book-lang> <dest-dir>
|
|
#
|
|
# Build the course as of the date specified specified in the
|
|
# POT-Creation-Date header of po/$book_lang.po. The output can be
|
|
# found in $dest_dir.
|
|
#
|
|
# The src/ and third_party/ directories are left in a dirty state so
|
|
# you can run `mdbook test` and other commands afterwards.
|
|
|
|
book_lang=${1:?"Usage: $0 <book-lang> <dest-dir>"}
|
|
dest_dir=${2:?"Usage: $0 <book-lang> <dest-dir>"}
|
|
|
|
if [ "$book_lang" = "en" ]; then
|
|
echo "::group::Building English course"
|
|
else
|
|
pot_creation_date=$(grep --max-count 1 '^"POT-Creation-Date:' "po/$book_lang.po" | sed -E 's/".*: (.*)\\n"/\1/')
|
|
pot_creation_date=${pot_creation_date:-now}
|
|
echo "::group::Building $book_lang translation as of $pot_creation_date"
|
|
|
|
# Back-date the sources to POT-Creation-Date. The content lives in two
|
|
# directories:
|
|
rm -r src/ third_party/
|
|
git restore --source "$(git rev-list -n 1 --before "$pot_creation_date" @)" src/ third_party/
|
|
# Set language and adjust site URL. Clear the redirects since they are
|
|
# in sync with the source files, not the translation.
|
|
export MDBOOK_BOOK__LANGUAGE=$book_lang
|
|
export MDBOOK_OUTPUT__HTML__SITE_URL=/comprehensive-rust/$book_lang/
|
|
export MDBOOK_OUTPUT__HTML__REDIRECT='{}'
|
|
fi
|
|
|
|
mdbook build -d "$dest_dir"
|
|
(cd "$dest_dir/exerciser" && zip --recurse-paths ../html/comprehensive-rust-exercises.zip comprehensive-rust-exercises/)
|
|
|
|
echo "::endgroup::"
|