rust-cli / anstyle

ANSI text styling
https://docs.rs/anstyle
Other
106 stars 16 forks source link

Supporting FORCE_COLOR as an alias to CLICOLOR_FORCE #192

Open samypr100 opened 3 months ago

samypr100 commented 3 months ago

As originally reported in https://github.com/astral-sh/uv/issues/3955, it seems both https://force-color.org/ and https://no-color.org/ are becoming adopted community standards.

Python's 3.13 docs shows an example usage of both https://docs.python.org/3.13/using/cmdline.html#controlling-color.

It would be ideal if anstyle can support FORCE_COLOR in addition to CLICOLOR_FORCE to force color support.

I believe there should be no functional changes beyond supporting an additional environment variable check to the existing clicolor_force function in anstyle-query crate. NO_COLOR would still take precedence over FORCE_COLOR.

epage commented 3 months ago

https://force-color.org/ is new to me. I've seen FORCE_COLOR before but it was cargo-culting only without anything published and there were deviations of it.

btw we already support CLICOLOR / CLICOLOR_FORCE, see https://bixense.com/clicolors/

A big question is how to handle the interaction of 3 different standards. At least FORCE_COLOR and CLICOLOR acknowledge and specify how to interact with NO_COLOR but they don't specify how to interact with each other, e.g. jhasse/clicolors#15

samypr100 commented 3 months ago

Thanks, https://force-color.org/ (the website) was relatively new to me as well.

I decided to propose this issue given python started considered it canonical in their docs and thought it was probably worthy to consider support for it here as it would help projects like uv, ruff, and potentially others.

For what it's worth python just checks for the mere presence of the environment var, and other tools are notionally similar but differ in what exactly they search for and how they use it in context of the other variables.

I don't see a standard on how all of them interact and I'm not sure there will ever be one. For this project specifically, I was trying to align FORCE_COLOR to CLICOLOR_FORCE's definition and usage.

I wish the was a better way to gather metrics on usage, but at a glance it does seem at least on Github that "FORCE_COLOR" usage outweights the usage of "CLICOLOR_FORCE", but I understand that's not fully representative by any means.

epage commented 3 months ago

When I was weighing what to build-in, I was less interested in how wide spread something is about how consistently its expected to be implemented. People can always build their own thing on top but I didn't feel like arbitrating between parties arguing over 3 different implementations.

epage commented 3 months ago

In donatj/force-color.org#30 I bring up the discrepancies. We'll see how that goes...

samypr100 commented 3 months ago

I didn't feel like arbitrating between parties arguing over 3 different implementations.

Thanks for bringing up the discrepancies ❤️