[Pythonmac-SIG] Spotlight Importing without .py
matsakis at mit.edu
Sat Jan 21 08:01:28 CET 2006
I really dig the Spotlight Metadata Importer for python, but it only works
for files ending in ".py" which excludes various shell scripts I have
written that have no filename extension. Anyone have a super elegant
solution to this problem?
Here's my thoughts on the matter. To my knowledge, Mac OS X has only
three ways of knowing the type of a file: the HFS type code, the filename
extension, and the presence of an executable bit on a file* (in order of
precidence). I've already nixed filename extensions and the executable bit
only seems to be able to identify something as a "Unix Executable File".
So, that leaves HFS type codes. The first question is whether this is an
HFS type code lying around from the days of yore that identified a python
executable script? If not, would anyone mind if I registered one? (Once
we've got a suitable type code, modifying the Spotlight Metadata Importer
to claim it is no big deal).
The more challenging part is to actually affix that type code on all
extension-less python executables; As far as Mac OS X is concerned these
files have no type, so there isn't a trivial way to write a script that
would search for them and tag them. Using spotlight, you can at least
limit your search to text and executable files, but you would still need
to example their contents individually to know whether they should be
tagged. This script would have to be run periodically or, if you put all
such scripts in a common location you could create a launch item for it.
As a crazy alternative to all of the above, the python metadata importer
could be written to work in conjunction with spotmeta
(http://www.fluffy.co.uk/spotmeta/) to additionally run on all text or
executable files and only add the python metadata if the file actually is
a python file. Not that I'm suggesting this be done or anything, but I
think its an interesting idea. Hopefully Leopard will provide a more
elegant solution to this problem.
* The saddest part of this story is that /usr/bin/file has been on Mac OS
X since day one and understands perfectly well what a "a python script
text executable" is. Yet, when the Finder encounters a file without an
extension or HFS code rather than, say, looking at the file to see what
kind it is, it absolves all responsibility and forces you to find an
application that might open it.
More information about the Pythonmac-SIG