forked from platformio/platformio-core
Catch click's IOError for VSCode Terminal
This commit is contained in:
@ -101,17 +101,18 @@ def main():
|
|||||||
except: # pylint: disable=bare-except
|
except: # pylint: disable=bare-except
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Handle IOError issue with colorama/VSCode
|
# Handle IOError issue with VSCode's Terminal (Windows)
|
||||||
click_echo_origin = click.echo
|
click_echo_origin = [click.echo, click.secho]
|
||||||
|
|
||||||
def _echo(*args, **kwargs):
|
def _safe_echo(origin, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
click_echo_origin(*args, **kwargs)
|
click_echo_origin[origin](*args, **kwargs)
|
||||||
except IOError:
|
except IOError:
|
||||||
(sys.stderr.write if kwargs.get("err") else
|
(sys.stderr.write if kwargs.get("err") else
|
||||||
sys.stdout.write)("%s\n" % (args[0] if args else ""))
|
sys.stdout.write)("%s\n" % (args[0] if args else ""))
|
||||||
|
|
||||||
click.echo = _echo
|
click.echo = lambda *args, **kwargs: _safe_echo(0, *args, **kwargs)
|
||||||
|
click.secho = lambda *args, **kwargs: _safe_echo(1, *args, **kwargs)
|
||||||
|
|
||||||
cli(None, None, None)
|
cli(None, None, None)
|
||||||
except Exception as e: # pylint: disable=W0703
|
except Exception as e: # pylint: disable=W0703
|
||||||
|
Reference in New Issue
Block a user