зеркало из https://github.com/mozilla/gecko-dev.git
114 строки
4.8 KiB
Plaintext
114 строки
4.8 KiB
Plaintext
|
# 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
|
||
|
|