seqcli icon indicating copy to clipboard operation
seqcli copied to clipboard

Allow option to retain ANSI color codes when output is piped

Open damianpowell opened this issue 3 years ago • 1 comments

In PowerShell Core (pwsh), the following command outputs human readable logs, in colour:

Get-Content .\upgrade-assistant.clef  | seqcli print

image

However, if I want to view this at the command line using something like less then the ANSI colour codes are stripped out:

Get-Content .\upgrade-assistant.clef  | seqcli print | less

image

I assume seqcli strips out ANSI control codes when the output is being piped or redirected in order to be friendly to consumers further down the pipe. It would be great if we could force seqcli print to emit the ANSI colour codes in some circumstances, particularly interactive console sessions. Perhaps a positive version of --no-color with an interactive-friendly shorthand version?

Get-Content .\upgrade-assistant.clef  | seqcli print --color | less

or

Get-Content .\upgrade-assistant.clef  | seqcli print -c | less

It would be great if this could be implemented in clef-tool too, but I understand where the activity is...

damianpowell avatar May 26 '22 16:05 damianpowell

Thanks for the suggestion! Perhaps --force-color would make the behavior of the flag slightly clearer?

The print command works by pushing events through Serilog.Sinks.Console, which already accepts an applyThemeToRedirectedOutput flag.

Along with specifying this, --force-color would also have to specify an ANSI console theme (on Windows, Serilog.Sinks.Console doesn't use ANSI codes by default).

Open to a PR, if anyone's able to take a look.

nblumhardt avatar May 27 '22 03:05 nblumhardt