bash_completion: do not use aliased hg if it sources a script (issue6308)
I have an alias that sources a script around hg. Mercurial's bash_completion
script tries to use this as its main hg binary. But sourcing a wrapper breaks
Bash's completion. So this patch disables using the alias as the hg binary if
it starts with "source ".
Alias resolution was introduced in rev 191ab08e7099 for users with
"alias hg='hg --some_opts'".
See https://www.mercurial-scm.org/repo/hg/rev/191ab08e7099
#!/usr/bin/env python
# Filters traceback lines from stdin.
from __future__ import absolute_import, print_function
import io
import sys
if sys.version_info[0] >= 3:
# Prevent \r from being inserted on Windows.
sys.stdout = io.TextIOWrapper(
sys.stdout.buffer,
sys.stdout.encoding,
sys.stdout.errors,
newline="\n",
line_buffering=sys.stdout.line_buffering,
)
state = 'none'
for line in sys.stdin:
if state == 'none':
if line.startswith('Traceback '):
state = 'tb'
elif state == 'tb':
if line.startswith(' File '):
state = 'file'
continue
elif not line.startswith(' '):
state = 'none'
elif state == 'file':
# Ignore lines after " File "
state = 'tb'
continue
print(line, end='')