Repository navigation
Expand file tree
/
Copy pathrsconstruct.toml
More file actions
78 lines (65 loc) · 3.58 KB
/
Copy pathrsconstruct.toml
File metadata and controls
78 lines (65 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# rsconstruct build configuration for this repository.
#
# This file is the build. The test job of .github/workflows/ci.yml
# (byte-identical across all rs* repos) runs `rsconstruct build` and nothing
# else, so what passes here is what passes in CI, and `rsmultigit build`
# runs the same thing across the fleet. Every cargo invocation goes through
# rsconstruct rather than being typed by hand.
[build]
# src_dirs entries name directories; "." (the whole tree) is a config error
reject_dot_src_dirs = true
# ─── dependencies ────────────────────────────────────────────────────────────
# The crates every rs* repo's build and release run, installed with
# `rsconstruct tool install project` (cargo install --locked, by crate name).
# cargo-deny and cargo-nextest are what the clippy instances below run,
# mdbook builds docs/, and cargo-release reads release.toml. rustfmt and
# clippy are rustup components, not crates, so they are absent. This block
# is byte-identical across all rs* repos: change it everywhere or nowhere.
[dependencies]
cargo = ["cargo-deny", "cargo-nextest", "cargo-release", "mdbook"]
# ─── markdown ────────────────────────────────────────────────────────────────
# rumdl over the README and the mdBook sources, with the fleet-shared
# .rumdl.toml. docs/src/SUMMARY.md is excluded: mdBook part titles are
# multiple level-1 headings by design, which MD025 would demote.
[processor.checker.rumdl]
src_dirs = ["docs/src"]
src_files = ["README.md"]
src_exclude_paths = ["docs/src/SUMMARY.md"]
# ─── rust ────────────────────────────────────────────────────────────────────
# `cargo build`. CI builds the dev profile only; release binaries come from
# the cross-target release job, which is not a local concern.
# target/ is not cached: it is many gigabytes and cargo already keeps its
# own incremental state there, so copying it into the rsconstruct store
# would cost far more than it could ever save.
[processor.mass_generator.cargo]
src_files = ["Cargo.toml"]
profiles = ["dev"]
# The clippy processor is "run `cargo <command> <args>` once per Cargo.toml,
# re-run when any .rs or .toml under it changes". That is exactly the shape
# of every other cargo check, so each one is an instance of it with a
# different command.
# cargo fmt --all --check: stock rustfmt, there is no rustfmt.toml in the fleet
[processor.checker.clippy.fmt]
src_files = ["Cargo.toml"]
command = "fmt"
args = ["--all", "--check"]
# cargo clippy --all-targets -- -D warnings
[processor.checker.clippy.lint]
src_files = ["Cargo.toml"]
args = ["--all-targets", "--", "-D", "warnings"]
# cargo deny check: Cargo.lock against the RustSec advisory database, with
# the fleet-shared deny.toml
[processor.checker.clippy.deny]
src_files = ["Cargo.toml"]
command = "deny"
args = ["check"]
# cargo nextest run: the test suite, with .config/nextest.toml's profile.
# Some tests reach the network (the gem tests install from rubygems.org), so
# a sandboxed build must not cut it off.
[processor.checker.clippy.nextest]
src_files = ["Cargo.toml"]
command = "nextest"
args = ["run"]
sandbox_network = true
# No doctest instance: nextest does not run doctests, but `cargo test --doc`
# errors outright on a binary-only crate, and this crate has no src/lib.rs.