1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2024-12-17 15:21:32 +02:00
Commit Graph

74 Commits

Author SHA1 Message Date
dependabot[bot]
b3b40364c8
build(deps): bump crate-ci/typos from 1.16.9 to 1.16.26 (#1624)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.9 to
1.16.26.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.16.26</h2>
<h2>[1.16.26] - 2023-12-27</h2>
<h3>Fixes</h3>
<ul>
<li>Apply <code>extend-ignore-re</code> to file names in addition to
file content</li>
</ul>
<h2>v1.16.25</h2>
<h2>[1.16.25] - 2023-12-13</h2>
<h3>Fixes</h3>
<ul>
<li>Have correction in <code>extend-words</code> match the original
word's case</li>
</ul>
<h2>v1.16.24</h2>
<h2>[1.16.24] - 2023-12-08</h2>
<h3>Fixes</h3>
<ul>
<li>Don't silently ignore config when there is an error in a field</li>
</ul>
<h2>v1.16.23</h2>
<h2>[1.16.23] - 2023-11-06</h2>
<h3>Fixes</h3>
<ul>
<li>Ensure <code>--force-exclude</code> handles simple patterns like
<code>some-dir</code></li>
</ul>
<h2>v1.16.22</h2>
<h2>[1.16.22] - 2023-11-01</h2>
<h3>Fixes</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/843">October
2023</a> changes</li>
</ul>
<h2>v1.16.21</h2>
<h2>[1.16.21] - 2023-10-27</h2>
<h3>Fixes</h3>
<ul>
<li>Improve colored output</li>
<li>Don't correct <code>SHTTP</code> to <code>HTTPS</code></li>
<li>Associate <code>.jl</code> with the <code>jl</code> language type,
rather than <code>lisp</code></li>
<li>Add Julia-specific allowed words</li>
</ul>
<h2>v1.16.20</h2>
<h2>[1.16.20] - 2023-10-16</h2>
<h3>Features</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h2>[1.16.26] - 2023-12-27</h2>
<h3>Fixes</h3>
<ul>
<li>Apply <code>extend-ignore-re</code> to file names in addition to
file content</li>
</ul>
<h2>[1.16.25] - 2023-12-13</h2>
<h3>Fixes</h3>
<ul>
<li>Have correction in <code>extend-words</code> match the original
word's case</li>
</ul>
<h2>[1.16.24] - 2023-12-08</h2>
<h3>Fixes</h3>
<ul>
<li>Don't silently ignore config when there is an error in a field</li>
</ul>
<h2>[1.16.23] - 2023-11-06</h2>
<h3>Fixes</h3>
<ul>
<li>Ensure <code>--force-exclude</code> handles simple patterns like
<code>some-dir</code></li>
</ul>
<h2>[1.16.22] - 2023-11-01</h2>
<h3>Fixes</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/843">October
2023</a> changes</li>
</ul>
<h2>[1.16.21] - 2023-10-27</h2>
<h3>Fixes</h3>
<ul>
<li>Improve colored output</li>
<li>Don't correct <code>SHTTP</code> to <code>HTTPS</code></li>
<li>Associate <code>.jl</code> with the <code>jl</code> language type,
rather than <code>lisp</code></li>
<li>Add Julia-specific allowed words</li>
</ul>
<h2>[1.16.20] - 2023-10-16</h2>
<h3>Features</h3>
<ul>
<li><em>(config)</em> <code>extend-ignore-words-re</code> field for
defining all classes of words</li>
</ul>
<h2>[1.16.19] - 2023-10-12</h2>
<h3>Features</h3>
<ul>
<li><code>--file-list &lt;PATH&gt;</code> for accepting files to check
from a file or stdin (<code>-</code>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="45a880d9f8"><code>45a880d</code></a>
chore: Release</li>
<li><a
href="1e55ede61c"><code>1e55ede</code></a>
docs: Update changelog</li>
<li><a
href="e32ec882ea"><code>e32ec88</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/886">#886</a>
from epage/olt</li>
<li><a
href="bf66cbd0b6"><code>bf66cbd</code></a>
fix(config): Apply extend-ignore-re to file names</li>
<li><a
href="a9afeef275"><code>a9afeef</code></a>
test(cli): Show extend-ignore on file names</li>
<li><a
href="5bd389de71"><code>5bd389d</code></a>
chore: Release</li>
<li><a
href="8dbecf3e45"><code>8dbecf3</code></a>
docs: Update changelog</li>
<li><a
href="f8f8c6edf1"><code>f8f8c6e</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/884">#884</a>
from epage/custom</li>
<li><a
href="55d802d0ef"><code>55d802d</code></a>
fix(dict): Mirror original case for custom dict</li>
<li><a
href="86c4c9fb4a"><code>86c4c9f</code></a>
test(cli): Add reproduction case</li>
<li>Additional commits viewable in <a
href="https://github.com/crate-ci/typos/compare/v1.16.9...v1.16.26">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.16.9&new-version=1.16.26)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-31 15:08:10 +00:00
Martin Geisler
35442ad424
Add back apt update (#1584)
This reverts #1490 due to errors seen in
https://github.com/google/comprehensive-rust/actions/runs/7188648811/job/19590765217.
The error says

Get:23 http://azure.archive.ubuntu.com/ubuntu jammy/main amd64
libc6-dev-arm64-cross all 2.35-0ubuntu1cross3 [1546 kB]
    Fetched 41.7 MB in 1s (46.1 MB/s)
E: Failed to fetch
mirror+file:/etc/apt/apt-mirrors.txt/pool/main/b/binutils/binutils-aarch64-linux-gnu_2.38-4ubuntu2.3_amd64.deb
404 Not Found [IP: 52.147.219.192 80]
E: Unable to fetch some archives, maybe run apt-get update or try with
--fix-missing?
    Error: Process completed with exit code 100.

This seems less transient than the error which made us remove the `apt
update` calls in #1490.
2023-12-13 11:33:54 +01:00
Martin Geisler
fca968651e
Fix mdbook redirection table (#1567)
There must have been a merge conflict at some point which resulted in a
malformed table. The result was that most redirects were blindly ignored
by `mdbook`.

I noticed it for
https://google.github.io/comprehensive-rust/enums.html which stopped
working because of this.

I took out the memory management redirect since we already have a file
where redirect would be (`mdbook` helpfully emits an error in this
case).
2023-12-07 15:51:42 +00:00
Martin Geisler
11a8334aa4
Improve action step name (#1507)
The step is not really testing the content of the translation, it’s
merely testing that the PO file is correctly formatted.
2023-12-02 06:26:38 -08:00
Martin Geisler
4744079253
Run translation tests to completion (#1506)
This makes it easier to find and fix all problems in one iteration when
something changes with the translation tooling.
2023-11-29 10:45:42 +01:00
Martin Geisler
ec70069806
Skip calling “apt update” in GH actions (#1490)
We are currently getting an error when we run “apt update”:

    Reading package lists...
E: Repository 'https://packages.microsoft.com/ubuntu/22.04/prod jammy
InRelease' changed its 'Origin' value from 'microsoft-ubuntu-jammy-prod
jammy' to 'Pulp 3'
E: Repository 'https://packages.microsoft.com/ubuntu/22.04/prod jammy
InRelease' changed its 'Label' value from 'microsoft-ubuntu-jammy-prod
jammy' to ''
    Error: Process completed with exit code 100.

I’m not sure why we get this, but updating should not be necessary in
the first place: the Ubuntu images already come with an up-to-date list
of packages.
2023-11-20 17:33:14 +01:00
Martin Geisler
031cb4fb89
Update to mdbook-i18n-helpers 0.3.0 (#1460)
This version has much improved support for the translation of code
blocks. See https://github.com/google/mdbook-i18n-helpers/issues/95 for
details.

Most PO files won’t need any update since most of them don’t translate
the comments in the code blocks. Those that do, can run
`mdbook-i18n-normalize` when they feel like it.
2023-11-11 16:10:13 +01:00
Martin Geisler
dc8bd22c33
Test that we can always extract strings (#1458)
This adds a check that `mdbook-xgettext` can always extract the strings
of the course. Without this, it’s possible to merge a change which will
make `mdbook-xgettext` error out the next time a translator tries to
refresh their translation.
2023-11-09 11:18:30 -05:00
Martin Geisler
a2bb4dab11
Rename action to check msgid changes (#1365)
The focus of the action is to check and validate changes to the `msgid`
fields, not to totally prevent such changes.

This also makes the `paths` a little more precise: we only care about
changes to `po/*.po`.
2023-10-22 16:37:34 +02:00
Martin Geisler
1357f7ac57
Add comments and license text to prevent-msgid.py (#1364) 2023-10-19 09:31:06 +00:00
Martin Geisler
c4ce2ab8a9
Format Python files with YAPF (#1360) 2023-10-18 13:56:05 -04:00
Martin Geisler
4560ee8484
Format all PO files with dprint (#1359)
This enforces a consistent formatting for the PO files. The goal of this
is to avoid large diffs due to random and unnecessary reformatting.

We use the format of `msgcat`: this is also waht `msgmerge` produces and
it’s easy to replicate for people by installing Gettext and running
`dprint fmt`.

This is a follow-up to #1351 which started enforcing that the `msgid`
fields don’t change due to reformatting in a PR.

If this turns out to be cumbersome, then we can disable it again.
2023-10-14 12:53:18 +02:00
Martin Geisler
5fafa4842c
Update mdbook to version 0.4.35 (#1302)
This also ports over the latest changes to `book.js` and `index.hbs`.

We probably need to come up with a more systematic way of doing this,
e.g., we could store our changes in a patch and automatically attempt to
apply it onto the latest upstream files.
2023-10-13 16:40:40 +02:00
Noam Zaks
b1cd19ed20
Added action to prevent changing msgid (#1351)
See discussion in #1344.

This checks that all `.po` files changed in pull requests either contain
changes in POT-Creation-Date (i.e. are run by the specific tool which
should change msgid's), or don't change msgid's (by checking that each
line changed is NOT between msgid and msgstr)

I have tested this on my fork, see [valid
changes](https://github.com/noamzaks/comprehensive-rust/pull/1/files)
where the action passes, and [invalid
changes](https://github.com/noamzaks/comprehensive-rust/pull/2/files)
where it doesn't.

The action also has output for failing/passing:

[passing](https://github.com/noamzaks/comprehensive-rust/actions/runs/6488171290/job/17620037473?pr=1)

[failing](https://github.com/noamzaks/comprehensive-rust/actions/runs/6488175171/job/17620050716?pr=2)
2023-10-11 23:31:51 +02:00
Martin Geisler
1d658ead10
Update to mdbook-i18n-helpers 0.2.4 (#1263)
This is the newest release of mdbook-i18n-helpers, fully backwards
compatible with the old one.
2023-10-01 23:01:22 -07:00
Martin Geisler
42541fc401
Automatically format YAML, CSS, and JS files (#1272)
Initially, I also formatted the templates in `theme/`, but this triggers
https://github.com/prettier/prettier/issues/11834. So I exclude them for
now.

---------

Co-authored-by: Ming-Ying Chung <mych@chromium.org>
2023-10-02 14:48:00 +09:00
Martin Geisler
ca966f304c
Sync src/ with date in PO file when publishing (#1243)
Before, we always used the latest English source files when
publishing. This means that translations become outdated as soon as
anything is changed in the source.

This PR changes will instead freeze translations in place: they will
keep using the same English source files until a new POT file is
merged into the translation. We do this by relying on the
POT-Creation-Date field in the PO files.

We still use up-to-date versions of all other files: this allows us to
fix things in the theme, for example. So the assumption here is that
never versions of our infrastructure remains compatible with old
versions of the Markdown files.

This approach has a problem: when files are moved, the English
translation will link to the new name. This name will not exist in the
old translations. We might be able to disable these links somehow.

Part of google/mdbook-i18n-helpers#16. The
logic here should eventually be moved to somewhere in
mdbook-i18n-helpers, most likely to the renderer that @sakex is
building in google/mdbook-i18n-helpers#84.
2023-09-25 09:52:39 +02:00
Dustin J. Mitchell
4815264e2d
Add mdbook-course to handle parsing frontmatter (#1224)
In v2 of the course, I'd like to include an estimate of the time to be
spent on each segment in the Markdown file. I think a good place for
such metadata is in the frontmatter.

For review purposes, though, I just want to display that information.
So, this is a start at a new mdbook preprocessor that just separates out
the frontmatter and includes it in a `<pre>` block. Eventually, I'd like
to parse it and put the time in the speaker notes.

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2023-09-20 10:01:53 -04:00
Martin Geisler
38557b142a
Use latest mdbook-i18n-helpers in action.yml (#1221)
The new release will allow us to skip untranslatable text in the course,
thus reducing the amount of work and churn for our translators.
2023-09-20 10:38:15 +02:00
Henri Fontana
aba8bf3449
Publish (incomplete) zh-CN and zh-TW translations (#1218)
Part of #684 and #324.
2023-09-18 18:17:40 +02:00
Martin Geisler
df5e021a9c
Sort language codes in publish.yml (#1193) 2023-09-11 10:15:04 -04:00
Henri Fontana
059e06356e
Publish Spanish translation (#1188)
Spanish translation was just finished and now we need to publish it.
#284
2023-09-10 11:37:57 +02:00
Martin Geisler
67a98bd895
fa: Publish the in-progress Persian translation (#1183)
This serves as a small demo of right-to-left script in mdbook.
2023-09-08 10:48:05 +02:00
Martin Geisler
09d1265cbb
Add support for right-to-left languages (#1165)
This updates our `mdbook` version to the latest version in Git. I copied
the `index.hbs` file from that version and back-ported our changes into
it. I checked English and Danish locally and they both look fine.

The new version has support for right-to-left languages:
https://github.com/rust-lang/mdBook/pull/1641.

We have an in-progress Persian translation. Download the `fa.zip`
artifact after building the PR to check how it looks. I checked Persian
locally and it looks mirrored like I expect (but we will need someone
who can read Persian to actually verify this).

Fixes #1164.
2023-09-07 09:50:44 +02:00
Antonio Linhart
11087c8411
Add typos to CI (#1158)
Hi all!

This CL fixes #1093:
* Avoids including current false-positives in the checking of typos
* Excludes localization-related files, as `typos` works with
  English words
* Fixes existing typos caught in the repo

Tested this in CI with a typo and it showed up in the list of actions!

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2023-09-05 20:21:59 +00:00
Martin Geisler
b6d51a7f22
Update mdbook-i18n-helpers to latest version (#1115)
I have created PRs to normalize all PO files to the new version of
mdbook-i18n-helpers. Simultaneously, we need to update the version used
to publish the course.

This is indirectly part of #330.
2023-08-23 12:34:12 -04:00
Martin Geisler
2e92da7acd
Update mdbook to 0.4.34 (#1066)
I also updated `book.js` and `index.hbs` to the latest versions while
keeping our local modifications.

I tested this locally with `mdbook serve` for both English and
Brazilian Portuguese and everything seems to work fine.
2023-08-11 15:40:01 +02:00
Martin Geisler
186d333227
Run builds on both Mac OS and Linux (#830)
* Run builds on both Mac OS and Linux

This would have helped us catch #570.

* Fix MacOS CI (#848)

* Revert unnecessary changes

The changes might be good, but I want to keep this PR small and
focused. If we end up with the extra `cfg` statements, we should
include a comment to let students know what they do: we’re targeting
people new to Rust, so we need to be careful with explanations.

---------

Co-authored-by: Dominik Maier <domenukk@gmail.com>
2023-06-22 10:38:41 +02:00
Ming-Ying Chung
a5fbd2fd7c
Add PR labeler action to label translation-related PRs (#845)
* Add PR labeler action to label translation-related PRs

* Sync labels when PR changes

* Update instructions for new translation
2023-06-22 14:21:33 +09:00
Md. Rasel Mandol
5d56a529da
Bengali translation: to link incomplete Bengali translation (#819)
Bengali translation: to link incomplete Bengali translation
2023-06-14 19:37:22 +01:00
Martin Geisler
5de9cdafea
Link to incomplete French, German, and Japanese translations (#730)
These translations all have more than 200 translated messages and
they’ve been updated in the last month.

I suggest we update the list here every few weeks based on input from
the translators: we don’t need a super strict rule here, we just need
interested translators who would like to see their work celebrated.

I suggest we only link completed translations in the language picker
since we have limited space there to differentiate the different
levels of completeness.
2023-05-31 11:55:39 +02:00
Martin Geisler
aaca44f62b
Format files with dprint (#711)
The dprint formatter is a flexible system which will use sandboxed
WebAssembly formatters to format our code (mostly: it calls out to
`rustfmt` for Rust code).

A particularly interesting feature is that dprint can format Rust code
blocks in the Markdown files. However, before we turn that on, we need
to have a way to normalize the Markdown text as it is extracted[1].
That is so that the word put into the translations is kept after the
reformatting.

[1]: https://github.com/google/mdbook-i18n-helpers/issues/19
2023-05-30 17:04:19 +02:00
Martin Geisler
2ddd7770f4
No need to run apt update before apt install (#634)
The VMs on GitHub have updated APT caches.
2023-05-24 15:58:34 -04:00
Martin Geisler
b9959bfeb1
Publish the in-progress Italian translation (#645)
This makes the translation available on the official site. It's not linked yet, but having it available there should make it easier to review the state.
2023-05-19 14:25:51 +02:00
Martin Geisler
b4fb870af6
Enable imports_granularity for rustfmt (#637)
This requires us to run a nightly Rust for our formatting check[1]. Other
users will see a warning when invoking `rustfmt`:

  Warning: can't set `imports_granularity = Module`, unstable features
  are only available in nightly channel.

This should be harmless overall and help us ensure better consistency
in our import formatting.

[1]: https://rust-lang.github.io/rustfmt/?version=v1.5.1&search=#imports_granularity
2023-05-16 12:35:49 +02:00
Martin Geisler
e19fc8bfd2
Simplify GitHub actions (#621)
* Remove unnecessary jobs names

They are inconsistent with the rest of the jobs and they overflow the
horizontal space in the GitHub UI.

* Remove unnecessary toolchain action

The GitHub runners include rustup and a recent stable Rust. We only
need to add the necessary target and we’re good to go.

This removes a lot of warnings because the action used an outdated
GitHub API: https://github.com/actions-rs/toolchain/issues/219

* Simplify job name

The job is testing a single translation, so it should be singular.

* Test English source with translations

This simplifies the workflow a little and ensures that we get
artifacts uploaded of the English version for every PR.

* Avoid shell command chain

GitHub actions supports setting the working directory directly.

* Upload only the book artifact

Right now, the artifacts all contain the same two top-level folders:
html/ and exerciser/. The former is what we actually deploy, the
second is a side-effect of the exerciser plugin.

With this change, we only upload the HTML and we ensure the zip file
for the xx language has a top-level comprehensive-rust-xx/ folder.
This makes it much nicer to use the generated artifacts.
2023-05-08 16:32:25 +02:00
Martin Geisler
934f9368c1
Remove unnecessary cache key (#586)
They caches have been refreshed long ago. I'm no longer sure which #1322 I was referring to in the comment — it might have been a weird typo for #552.
2023-04-27 13:25:02 -04:00
Andrew Walbran
86d8c4ae54 Rename exercise template directory and archive. 2023-04-05 16:28:07 +01:00
Andrew Walbran
ed4f5b64c4 Zip exercise templates for translation build artifacts. 2023-04-05 16:28:07 +01:00
Andrew Walbran
6b7c7cbc73 Fix publishing translations. 2023-04-05 16:28:07 +01:00
Andrew Walbran
b6f5ba1af0 Run exerciser as mdbook renderer. 2023-04-05 16:28:07 +01:00
Andrew Walbran
edd9df042c Make exerciser an mdbook renderer. 2023-04-05 16:28:07 +01:00
Andrew Walbran
3f7cc60686 Make zip part as part of script.
This makes running local builds easier.
2023-04-05 16:28:07 +01:00
Andrew Walbran
d0ef072cf2 Publish exercise templates to Pages. 2023-04-05 16:28:07 +01:00
Andrew Walbran
9372d14378 Build exercise templates in CI. 2023-04-05 16:28:07 +01:00
Martin Geisler
49bf110b31
Use mdbook-i18n-helpers crate (#552)
The i18n-helpers are now available as a stand-alone crate:
https://crates.io/crates/mdbook-i18n-helpers.

Because we cache the Rust binaries in our GitHub workflows, I bumped
the cache prefix to ensure we use a clean cache. Otherwise, Cargo
won’t install the new binaries in mdbook-i18n-helpers because it sees
the old ones from this repository.
2023-04-05 16:08:11 +02:00
Andrew Walbran
72ff50e60b Build bare-metal examples in presubmit. 2023-03-23 15:06:23 +00:00
Andrew Walbran
036269ec94 Add workflow to check that Rust code is formatted properly. 2023-03-20 14:26:57 +00:00
Martin Geisler
e366d833d0
Update mdbook to 0.4.28 (#480)
* Update mdbook to 0.4.28

This version contains https://github.com/rust-lang/mdBook/pull/1986 which will allow us to test the code in each translation.

* Fix formatting in Korean translation

The extra code block made `mdbook test` fail.
2023-03-07 10:14:26 +01:00
Martin Geisler
7e47e31408
Group per-translation output in publish step (#467) 2023-03-02 06:38:32 +09:00