Mercurial > hg > config
annotate python/lsex.py @ 379:61a3c07e9f7a
kill reject files
| author | Jeff Hammel <jhammel@mozilla.com> | 
|---|---|
| date | Thu, 25 Jul 2013 03:36:24 -0700 | 
| parents | 77e7cab3e9f2 | 
| children | 20aa4a6ef719 | 
| rev | line source | 
|---|---|
| 0 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 1 #!/usr/bin/env python | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 2 import os | 
| 69 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 3 import sys | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 4 from optparse import OptionParser | 
| 0 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 5 | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 6 # make sure duplicate path elements aren't printed twice | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 7 def ordered_set(alist): | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 8 seen = set() | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 9 new = [] | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 10 for item in alist: | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 11 if item in seen: | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 12 continue | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 13 seen.add(item) | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 14 new.append(item) | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 15 return new | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 16 | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 17 def lsex(path=None): | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 18 """ | 
| 367 | 19 list of executable files on the path | 
| 20 | |
| 21 - path: list or PATH-style string of directories to search. | |
| 22 if not specified, use system PATH | |
| 0 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 23 """ | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 24 | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 25 if path is None: | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 26 # use system path | 
| 367 | 27 path = os.environ['PATH'] | 
| 28 if isinstance(path, basestring): | |
| 29 path = ordered_set(path.split(os.pathsep)) | |
| 0 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 30 | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 31 executables = [] | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 32 | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 33 # add the executable files to the list | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 34 for i in path: | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 35 if not os.path.isdir(i): | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 36 continue | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 37 files = [ os.path.join(i,j) for j in os.listdir(i) ] | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 38 files = filter(lambda x: os.access(x, os.X_OK), files) | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 39 files.sort() # just to make the output pretty | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 40 executables.extend(files) | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 41 return executables | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 42 | 
| 69 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 43 def executable_names(path=None): | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 44 executables = lsex(path) | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 45 executables = set([os.path.basename(i) for i in executables]) | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 46 return executables | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 47 | 
| 0 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 48 if __name__ == '__main__': | 
| 69 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 49 parser = OptionParser() | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 50 parser.add_option('--names', action='store_true', default=False, | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 51 help="list only the set of names") | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 52 | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 53 options, args = parser.parse_args() | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 54 if options.names: | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 55 for i in sorted(executable_names()): | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 56 print i | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 57 sys.exit(0) | 
| 
71576cdc28ab
add option to pritn set of names
 Jeff Hammel <jhammel@mozilla.com> parents: 
0diff
changeset | 58 | 
| 0 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 59 for i in lsex(): | 
| 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 k0s <k0scist@gmail.com> parents: diff
changeset | 60 print i | 
