One of the things I've done for the upcoming version of Houdini for OS X is to fancy up some of the icons a bit. Our build system is still based on Makefiles. That means I've got to have some way to set a file's icon from the shell.
There are a number of solutions out there using AppleScript. However, Leopard's now standard inclusion of PyObjC makes things even more simple. Here's the Python code you need to set a files icon, given any image.
from AppKit import *
def set_icon(icon_path, file_path):
image = NSImage.alloc().initWithContentsOfFile_(icon_path)
workspace = NSWorkspace.sharedWorkspace()
workspace.setIcon_forFile_options_(image, file_path,
NSExcludeQuickDrawElementsIconCreationOption)
Pretty simple. There is one thing to watch out for though. Since this is a Cocoa routine, it needs to access the window server. And therefore will not work unless the user running the script is logged into the console. That's a bit of a pain for automated builds, but not a big deal for most people.