Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Supporting FORCE_COLOR as an alias to CLICOLOR_FORCE #192

Open
samypr100 opened this issue Jun 2, 2024 · 5 comments
Open

Supporting FORCE_COLOR as an alias to CLICOLOR_FORCE #192

samypr100 opened this issue Jun 2, 2024 · 5 comments
Labels
A-stream Area: anstream C-enhancement Category: Raise on the bar on expectations

Comments

@samypr100
Copy link

samypr100 commented Jun 2, 2024

As originally reported in astral-sh/uv#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
Copy link
Collaborator

epage commented Jun 3, 2024

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

@epage epage added C-enhancement Category: Raise on the bar on expectations A-stream Area: anstream labels Jun 3, 2024
@samypr100
Copy link
Author

samypr100 commented Jun 4, 2024

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
Copy link
Collaborator

epage commented Jun 4, 2024

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
Copy link
Collaborator

epage commented Jun 4, 2024

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

@samypr100
Copy link
Author

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

Thanks for bringing up the discrepancies ❤️

charliermarsh pushed a commit to astral-sh/uv that referenced this issue Jun 4, 2024
## Summary

Closes #3955

Adds explicit support to `NO_COLOR` and `FORCE_COLOR` via
GlobalSettings.

The order, per specs is now `NO_COLOR` > `FORCE_COLOR` > `color`.

This PR is a backup plan pending rust-cli/anstyle#192.

## Test Plan

Tested all cases locally for now; I didn't see existing tests for
GlobalSettings parsing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-stream Area: anstream C-enhancement Category: Raise on the bar on expectations
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants