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
# like ls -l, but do not print date, user, or non-common mode bit, to avoid
# using globs in tests.
from __future__ import absolute_import, print_function
import os
import stat
import sys
def modestr(st):
mode = st.st_mode
result = ''
if mode & stat.S_IFDIR:
result += 'd'
else:
result += '-'
for owner in ['USR', 'GRP', 'OTH']:
for action in ['R', 'W', 'X']:
if mode & getattr(stat, 'S_I%s%s' % (action, owner)):
result += action.lower()
else:
result += '-'
return result
def sizestr(st):
if st.st_mode & stat.S_IFREG:
return '%7d' % st.st_size
else:
# do not show size for non regular files
return ' ' * 7
os.chdir((sys.argv[1:] + ['.'])[0])
for name in sorted(os.listdir('.')):
st = os.stat(name)
print('%s %s %s' % (modestr(st), sizestr(st), name))