rust-lang / cargo

The Rust package manager
https://doc.rust-lang.org/cargo
Apache License 2.0
12.56k stars 2.38k forks source link

Cargo and rustc are using different tones of red for errors on the terminal #12740

Open RalfJung opened 11 months ago

RalfJung commented 11 months ago

Problem

Cargo and rustc are not consistent in terms of how they are coloring errors on the terminal.

Steps

  1. Run cargo check on a project with build failures.

image

As you can see, the two "error" are using two different shades of red. In terms of the colorize crate, rustc is using bright_red and cargo is using red.

Possible Solution(s)

One of cargo or rustc should switch to the other tone of red. I have a slight preference for "bright red", that's why I reported this as a cargo issue.

Notes

No response

Version

$ cargo version --verbose
cargo 1.72.0 (103a7ff2e 2023-08-15)
release: 1.72.0
commit-hash: 103a7ff2ee7678d34f34d778614c5eb2525ae9de
commit-date: 2023-08-15
host: x86_64-unknown-linux-gnu
libgit2: 1.6.4 (sys:0.17.2 vendored)
libcurl: 8.1.2-DEV (sys:0.4.63+curl-8.1.2 vendored ssl:OpenSSL/1.1.1u)
ssl: OpenSSL 1.1.1u  30 May 2023
os: Debian n/a (trixie) [64-bit]
weihanglo commented 11 months ago

Thanks for the report!

We're aware of this and have https://github.com/rust-lang/cargo/issues/12627 for tracking one of the approach. See also https://github.com/rust-lang/cargo/issues/2290#issuecomment-1728318644 for a short summary.

I lean to waiting for #12627 but also fine with manual tweaks.

weihanglo commented 11 months ago

Without investigating it by myself, do you know since which version this happened, or it has been there for a while?

RalfJung commented 11 months ago

I have no idea. I only just realized this when working on the messages for ui_test. It might have been like this for a while, it might have been hidden by me using a different terminal/configuration, it might be recent.

RalfJung commented 11 months ago

I went back through time a bit -- this is definitely a very long-standing issue. I see the difference even with Rust 1.40.

epage commented 11 months ago

Glad to see this wasn't something I broke recently as I've been making changes to how we do styling :)

12578 added styling to clap and #12655 made us use shared definitions to ensure we'd stay in sync which also made our style choices easier to audit.

Cargo uses bold+red and a lot of has likely haven't noticed the discrepancy because bold+red gets colored the same as bright_red in a lot of themes.

epage commented 11 months ago

We should probably do an audit of all colors used with their intended use and see where it'd work best to align.

Note that as follow ups to #12578 and #12655, cargo-fmt and cargo-clippy were also updated to align with cargo. I'm tempted to do this also to rustup but they hadn't upgrade to clap v4 last I checked.

rami3l commented 11 months ago

I'm tempted to do this also to rustup but they hadn't upgrade to clap v4 last I checked.

@epage Oh we have just done that! (Thanks @djc for your https://github.com/rust-lang/rustup/pull/3444!)