diff options
Diffstat (limited to 'python/which/TODO.txt')
-rw-r--r-- | python/which/TODO.txt | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/python/which/TODO.txt b/python/which/TODO.txt new file mode 100644 index 000000000..6df2de7f7 --- /dev/null +++ b/python/which/TODO.txt @@ -0,0 +1,113 @@ +# High Priority + +- Figure out the script story on the various platforms. On Windows, look into + the launcher thing that effbot has. Unix, don't install the script my + default. They can always do "python -m which ..." with Python >= 2.4. + Suggest an alias that some folks might want to use for that. + + +# Medium Priority + +- define __all__? +- improve test suite +- test with other versions of Python +- get the PATHEXT attached extension to reflect the actual canonical + case of file matches on Windows, currently the extension from PATHEXT + is always uppercase +- What to do with Change 145624 by shanec. It is a bit of a + bastardization. Maybe allow this with a special option to allow the change + in semantics. + + > Change 145624 by shanec@shanec-ocelotl on 2005/05/24 16:51:55 + > + > make which work better on OSX + > - add support for searching /Applications and /Network/Applications + > - add support for .app bundles + > + > Affected files ... + > + > ... //depot/main/Apps/Komodo-devel/src/python-sitelib/which.py#7 edit + > + > Differences ... + > + > ==== //depot/main/Apps/Komodo-devel/src/python-sitelib/which.py#7 (text) ==== + > + > @@ -126,10 +126,11 @@ + > sys.stderr.write("duplicate: %s (%s)\n" % potential) + > return None + > else: + > - if not stat.S_ISREG(os.stat(potential[0]).st_mode): + > + darwinApp = sys.platform == 'darwin' and potential[0][-4:]=='.app' + > + if not darwinApp and not stat.S_ISREG(os.stat(potential[0]).st_mode): + > if verbose: + > sys.stderr.write("not a regular file: %s (%s)\n" % potential) + > - elif not os.access(potential[0], os.X_OK): + > + elif not darwinApp and not os.access(potential[0], os.X_OK): + > if verbose: + > sys.stderr.write("no executable access: %s (%s)\n"\ + > % potential) + > @@ -166,6 +167,9 @@ + > path = os.environ.get("PATH", "").split(os.pathsep) + > if sys.platform.startswith("win"): + > path.insert(0, os.curdir) # implied by Windows shell + > + if sys.platform == 'darwin': + > + path.insert(0, '/Network/Applications') + > + path.insert(0, '/Applications') + > else: + > usingGivenPath = 1 + > + > @@ -182,6 +186,9 @@ + > exts = ['.COM', '.EXE', '.BAT'] + > elif not isinstance(exts, list): + > raise TypeError("'exts' argument must be a list or None") + > + elif sys.platform == 'darwin': + > + if exts is None: + > + exts = ['.app'] + > else: + > if exts is not None: + > raise WhichError("'exts' argument is not supported on "\ + > @@ -202,7 +209,8 @@ + > for ext in ['']+exts: + > absName = os.path.abspath( + > os.path.normpath(os.path.join(dirName, command+ext))) + > - if os.path.isfile(absName): + > + if os.path.isfile(absName) or (sys.platform == 'darwin' and \ + > + absName[-4:]=='.app' and os.path.isdir(absName)): + > if usingGivenPath: + > fromWhere = "from given path element %d" % i + > elif not sys.platform.startswith("win"): + + Here is a start with slight improvements: + + > Index: which.py + > =================================================================== + > --- which.py (revision 270) + > +++ which.py (working copy) + > @@ -126,9 +126,18 @@ + > sys.stderr.write("duplicate: %s (%s)\n" % potential) + > return None + > else: + > - if not stat.S_ISREG(os.stat(potential[0]).st_mode): + > + st_mode = os.stat(potential[0]).st_mode + > + isMacAppBundle = sys.platform == "darwin" \ + > + and potential[0].endswith(".app") \ + > + and stat.S_ISDIR(st_mode) + > + if not isMacAppBundle and not stat.S_ISREG(st_mode): + > if verbose: + > - sys.stderr.write("not a regular file: %s (%s)\n" % potential) + > + if sys.platform == "darwin": + > + sys.stderr.write("not a regular file or .app bundle: " + > + "%s (%s)\n" % potential) + > + else: + > + sys.stderr.write("not a regular file: %s (%s)\n" + > + % potential) + > elif not os.access(potential[0], os.X_OK): + > if verbose: + > sys.stderr.write("no executable access: %s (%s)\n"\ + + +# Low Priority + +- have a version for pre-generators (i.e. Python 2.1) +- add a "logging" interface + |