rust-cli / rust-cli/anstyle

Reduce verbosity in getting the final color for a stream

Open
#91 9 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.