Skip to content

Commit fe96650

Browse files
ehussmark-i-m
authored andcommitted
Add some guidelines on the CLI.
1 parent 6d5e074 commit fe96650

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/SUMMARY.md

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
- [Emitting Errors and other Diagnostics](diagnostics.md)
3030
- [`LintStore`](./diagnostics/lintstore.md)
3131
- [Diagnostic Codes](./diagnostics/diagnostic-codes.md)
32+
- [Command-line arguments](./cli.md)
3233
- [ICE-breaker teams](ice-breaker/about.md)
3334
- ["Cleanup Crew" ICE-breakers](ice-breaker/cleanup-crew.md)
3435
- [LLVM ICE-breakers](ice-breaker/llvm.md)

src/cli.md

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Command-line Arguments
2+
3+
Command-line flags are documented in the [rustc book][cli-docs]. All *stable*
4+
flags should be documented there. Unstable flags should be documented in the
5+
[unstable book].
6+
7+
## Guidelines
8+
9+
- Flags should be orthogonal to each other. For example, if we'd have a
10+
json-emitting variant of multiple actions `foo` and `bar`, an additional
11+
`--json` flag is better than adding `--foo-json` and `--bar-json`.
12+
- Avoid flags with the `no-` prefix. Instead, use the [`parse_bool`] function,
13+
such as `-C embed-bitcode=no`.
14+
- Consider the behavior if the flag is passed multiple times. In some
15+
situations, the values should be accumulated (in order!). In other
16+
situations, subsequence flags should override previous flags (for example,
17+
the lint-level flags). And some flags (like `-o`) should generate an error
18+
if it is too ambiguous what multiple flags would mean.
19+
- Always give options a long descriptive name, if only for more understandable
20+
compiler scripts.
21+
- The `--verbose` flag is for adding verbose information to `rustc` output
22+
when not compiling a program. For example, using it with the `--version`
23+
flag gives information about the hashes of the code.
24+
- Experimental flags and options must be guarded behind the `-Z
25+
unstable-options` flag.
26+
27+
[cli-docs]: https://doc.rust-lang.org/rustc/command-line-arguments.html
28+
[unstable book]: https://doc.rust-lang.org/nightly/unstable-book/
29+
[`parse_bool`]: https://github.com/rust-lang/rust/blob/e5335592e78354e33d798d20c04bcd677c1df62d/src/librustc_session/options.rs#L307-L313

0 commit comments

Comments
 (0)