Reduce verbosity in getting the final color for a stream
Open
Nobody has claimed this yet.
A-stream
C-enhancement
- Dominant language
- HTML
- Stars
- 171
- Forks
- 44
- Avg merge
- 2h 34m
- Merged PRs (30d)
- 6
Description
With the updated crates and API:
// I read the color flag the user specified in the cli arguments and default it for my program
program.color.write_global();
// I get the final result for the `stdout` stream of whether to show color or not
let should_color = match anstream::AutoStream::choice(&std::io::stdout()) {
anstream::ColorChoice::Auto => unreachable!(),
anstream::ColorChoice::AlwaysAnsi => true,
anstream::ColorChoice::Always => true,
anstream::ColorChoice::Never => false,
};
// I tell the logger to show color
tracing_subscriber::registry()
.with(
tracing_subscriber::fmt::layer()
.with_ansi(should_color)
)
.init();
Before, it used to be:
program.color.write_global();
tracing_subscriber::registry()
.with(
tracing_subscriber::fmt::layer()
.with_ansi(get(Stream::Stdout).color())
)
.init();
I think we can make it simpler similarly:
program.color.write_global();
tracing_subscriber::registry()
.with(
tracing_subscriber::fmt::layer()
.with_ansi(stdout().color())
)
.init();
All we have to do is add pub fn color(&self) -> bool to anstream::AutoStream
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at anstream::AutoStream, where the issue requests a public color(&self) -> bool method. Check the existing stream and color-choice behavior, then confirm the resulting API supports the concise stdout().color() usage shown in the issue.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100