Add function which implements the bash 'which' feature.

* Add function _which(), which is shamelessly stolen from Twisted's
   twisted.python.procutils module.
feature/documentation-builds-dirhtml
Isis Lovecruft 2013-03-06 21:44:13 +00:00 committed by Isis Lovecruft
parent 7eff7b4a03
commit 8133abd851
1 changed files with 38 additions and 0 deletions

View File

@ -858,6 +858,44 @@ def _sanitise(*args, **kwargs):
return sanitised
def _which(executable, flags=os.X_OK):
"""Shamelessly pilfered from Twisted's :mod:`twisted.python.proutils`.
Search PATH for executable files with the given name.
On newer versions of MS-Windows, the PATHEXT environment variable will be
set to the list of file extensions for files considered executable. This
will normally include things like ".EXE". This fuction will also find files
with the given name ending with any of these extensions.
On MS-Windows the only flag that has any meaning is os.F_OK. Any other
flags will be ignored.
@type name: C{str}
@param name: The name for which to search.
@type flags: C{int}
@param flags: Arguments to L{os.access}.
@rtype: C{list}
@param: A list of the full paths to files found, in the order in which
they were found.
"""
result = []
exts = filter(None, os.environ.get('PATHEXT', '').split(os.pathsep))
path = os.environ.get('PATH', None)
if path is None:
return []
for p in os.environ.get('PATH', '').split(os.pathsep):
p = os.path.join(p, name)
if os.access(p, flags):
result.append(p)
for e in exts:
pext = p + e
if os.access(pext, flags):
result.append(pext)
return result
class GPG(object):
"""Encapsulate access to the gpg executable"""
decode_errors = 'strict'