west
west copied to clipboard
Add west --color=always and west config color=always
Git has an (somewhat inconsistent) set of "color = always" options to override the automated terminal detection. Demo of one of the (too many) options:
git diff # colored :-)
git diff | less # not colored :-(
git diff --color=always | less -R # colored again! :-(
It would nice for west
to offer the same feature.
While rarer, color=never
is sometimes needed too. For instance some CI engines try hard to pretend they are terminals to capture colors but then can fail to display them for some reason.
Originally posted by @marc-hb in https://github.com/zephyrproject-rtos/west/pull/649#discussion_r1169274807
In west
, colorama handles terminal detection. The following and BARELY TESTED hack seems equivalent to color=always
--- a/src/west/app/main.py
+++ b/src/west/app/main.py
@@ -895,7 +895,7 @@ def main(argv=None):
# Makes ANSI color escapes work on Windows, and strips them when
# stdout/stderr isn't a terminal
- colorama.init()
+ colorama.init(strip=False)
# Create the WestApp instance and let it run.
app = WestApp()
west diff | less -R # color!
west diff | less # as expected, color mojikabe :-(
An interesting question design is: when git
and west
settings conflict, which one wins?
git config color.ui never
west config color always
west diff | less -R # color or not?
To make things even more interesting, git
has not just one color.ui
setting but also another color.status
and who knows what else.
Spotted by @mbolivar-nordic:
- https://lwn.net/Articles/929123/ Textual: a framework for terminal user interfaces