Mercurial > hg > config
comparison python/lsex.py @ 0:f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
| author | k0s <k0scist@gmail.com> |
|---|---|
| date | Thu, 15 Oct 2009 11:41:26 -0400 |
| parents | |
| children | 71576cdc28ab |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:f3ab51c79813 |
|---|---|
| 1 #!/usr/bin/env python | |
| 2 import os | |
| 3 | |
| 4 # make sure duplicate path elements aren't printed twice | |
| 5 def ordered_set(alist): | |
| 6 seen = set() | |
| 7 new = [] | |
| 8 for item in alist: | |
| 9 if item in seen: | |
| 10 continue | |
| 11 seen.add(item) | |
| 12 new.append(item) | |
| 13 return new | |
| 14 | |
| 15 def lsex(path=None): | |
| 16 """ | |
| 17 list executable files on the path | |
| 18 o path: list of directories to search. if not specified, use system path | |
| 19 """ | |
| 20 | |
| 21 if path is None: | |
| 22 # use system path | |
| 23 path = ordered_set(os.environ['PATH'].split(':')) | |
| 24 | |
| 25 executables = [] | |
| 26 | |
| 27 # add the executable files to the list | |
| 28 for i in path: | |
| 29 if not os.path.isdir(i): | |
| 30 continue | |
| 31 files = [ os.path.join(i,j) for j in os.listdir(i) ] | |
| 32 files = filter(lambda x: os.access(x, os.X_OK), files) | |
| 33 files.sort() # just to make the output pretty | |
| 34 executables.extend(files) | |
| 35 return executables | |
| 36 | |
| 37 if __name__ == '__main__': | |
| 38 for i in lsex(): | |
| 39 print i |
