Skip to content

Unexpected side affect of Ansi.isSupported checking terminal. #149

@bsutton

Description

@bsutton

The method Ansi.isSupported checks if a ansi escape sequences are supported on the current terminal.

To make this more reliable it now checks if a terminal is attached by calling stdout.isTerminal.

This has worked well.

However there was an unexpected side effect.

If you run'

final list = start('some command', progress: Progress.capture()).toList();
print(list);

The previously the printed list included any ansi coloring.
With the new Ansi.isSupported check the output of any colour escape codes is suppressed because there is no terminal attached (we are capturing the output to a list).
This is not what I would normally want.
I'm think that we change the colour methods so the still output ansi escape sequences even if a terminal isn't attached.
This has the down side that we get colours logged to log files.
We do have the Ansi.strip() method that strips out colour which can be used as a filter when logging.

Discussion welcomed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions