1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-06-08 10:36:17 +02:00

Document translation workflow (#2579)

This documents the documentation workflow.
This commit is contained in:
Martin Geisler 2025-04-23 10:24:30 +02:00 committed by GitHub
parent 3103eba5cd
commit ec75f8f8ab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 66 additions and 0 deletions

View File

@ -9,6 +9,8 @@ set -Eeuo pipefail
#
# The src/ and third_party/ directories are left in a dirty state so
# you can run `mdbook test` and other commands afterwards.
#
# See also TRANSLATIONS.md.
book_lang=${1:?"Usage: $0 <book-lang> <dest-dir>"}
dest_dir=${2:?"Usage: $0 <book-lang> <dest-dir>"}

View File

@ -1,5 +1,7 @@
name: Publish
# See also TRANSLATIONS.md.
on:
push:
branches:

View File

@ -215,6 +215,68 @@ the hard work, even if it is incomplete.
[CODEOWNERS]: https://github.com/google/comprehensive-rust/blob/main/.github/CODEOWNERS
## Publication Workflow
> This section is for the developers of Comprehensive Rust, but it might give
> you valuable background information on how the translations are published.
When a change is made to the `main` branch, the [`publish.yml`] GitHub CI
workflow starts.
The `publish` job in this workflow will:
- Install dependencies as described in [`CONTRIBUTING`](CONTRIBUTING.md).
- Build every translation of the course, including the original English, using
[`build.sh`]. The English HTML ends up in `book/html/`, the HTML for the `xx`
language ends up in `book/xx/html/`.
- Publish the entire `book/html/` directory to
https://google.github.io/comprehensive-rust/.
[`build.sh`]: https://github.com/google/comprehensive-rust/blob/main/.github/workflows/build.sh
### `build.sh`
The `build.sh` script is used both when testing code from a PR (with
[`build.yml`]) and when publishing the finished book (with [`publish.yml`]).
[`build.yml`]: https://github.com/google/comprehensive-rust/blob/main/.github/workflows/build.yml
[`publish.yml`]: https://github.com/google/comprehensive-rust/blob/main/.github/workflows/publish.yml
The job of the script is to call `mdbook build`, but with a few extra steps:
- It will enable the PDF output using `mdbook-pandoc`. This is disabled by
default to make it easier for people to run `mdbook build` without having to
configure LaTeX.
#### Restoring Translations
When building a translation (languages other than English), `build.sh` will
restore all Markdown files to how they looked at the time recorded in the
POT-Creation-Date header.
This means that:
- A translation does not degrade when the English text is changed.
- A translation will not received the latest fixes to the English text.
The script restores the Markdown with a simple
```sh
$ git restore --source $LAST_COMMIT src/ third_party/
```
command, where `$LAST_COMMIT` is the commit at the time of the POT-Creation-Date
header.
A consequence of this is that we use the latest theme, CSS, JavaScript, etc for
each translation.
After `build.sh` was run, the working copy is left in this dirty state. Beware
of this if you want to build the English version next, as you will have to clean
up manually.
## Status reports
Two translation status reports are automatically generated: