]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added functionality: locate CW projects, copy them, empty them and
authorJack Jansen <jack.jansen@cwi.nl>
Thu, 31 Aug 1995 13:47:14 +0000 (13:47 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Thu, 31 Aug 1995 13:47:14 +0000 (13:47 +0000)
binhex them.

Mac/scripts/binhextree.py

index 9ffefbe9873623799d4a219ab60885d87a46d5f7..fa95af7e64c8353ff3ab5e5a4404aca21c613aec 100644 (file)
 import os
 import binhex
 import sys
+import macostools
+import macfs
 
-extensions = ['.rsrc']
+import addpack
+addpack.addpack('Tools')
+addpack.addpack('bgen')
+addpack.addpack('AE')
+import aetools
+from Metrowerks_Shell_Suite import Metrowerks_Shell_Suite
+from Required_Suite import Required_Suite 
+
+class MwShell(aetools.TalkTo, Metrowerks_Shell_Suite, Required_Suite):
+       pass
+
+# Top-level directory
+TOP=''
+
+# Where to put CW projects, relative to TOP
+CWDIR=':Mac:mwerks:projects'
+
+# Helper routines
+def binhexit(path, name):
+       dstfile = path + '.hqx'
+       if os.path.exists(dstfile) and \
+                       os.stat(dstfile)[8] > os.stat(path)[8]:
+               print 'Skip', path,'- Up-to-date'
+               return
+       print 'Binhexing', path
+       binhex.binhex(path, dstfile)
+       
+# Project files to handle
+project_files = {}
+
+def hexbincwprojects(creator):
+       """Compact and hexbin all files remembered with a given creator"""
+       print 'Please start project mgr with signature', creator,'-'
+       sys.stdin.readline()
+       try:
+               mgr = MwShell(creator)
+       except 'foo':
+               print 'Not handled:', creator
+               return
+       for fss in project_files[creator]:
+               srcfile = fss.as_pathname()
+               dstfile = srcfile + '.hqx'
+               if os.path.exists(dstfile) and \
+                               os.stat(dstfile)[8] > os.stat(srcfile)[8]:
+                       print 'Skip', path,'- Up-to-date'
+                       continue
+               print 'Compacting', dstfile
+               mgr.open(fss)
+               mgr.Reset_File_Paths()
+               mgr.Remove_Binaries()
+               mgr.Close_Project()
+               
+               print 'Binhexing', dstfile
+               binhex.binhex(srcfile, dstfile)
+       mgr.quit()
+       
+def copycwproject(path, name):
+       """Copy CW project (if needed) and remember for hexbinning"""
+       global project_files
+       
+       dstdir = os.path.join(TOP, CWDIR)
+       if not os.path.exists(dstdir):
+               print dstdir
+               print 'No CW-project dir, skip', name
+               return
+       dstfile = os.path.join(dstdir, name)
+       # Check that we're not in the dest directory
+       if dstfile == path:
+               return
+
+       # If the destination doesn't exists or is older that the source
+       # we copy and remember it
+       
+       if os.path.exists(dstfile) and \
+                       os.stat(dstfile)[8] > os.stat(path)[8]:
+               print 'Not copying', path,'- Up-to-date'
+       else:
+               print 'Copy', path
+               macostools.copy(path, dstfile)
+       
+       fss = macfs.FSSpec(dstfile)
+       creator = fss.GetCreatorType()[0]
+       
+       if project_files.has_key(creator):
+               project_files[creator].append(fss)
+       else:
+               project_files[creator] = [fss]  
+       
+
+extensions = [
+       ('.rsrc', binhexit),
+       ('.ยต', copycwproject)
+       ]
 
 def walker(arg, top, names):
        for n in names:
-               for ext in extensions:
+               for ext, handler in extensions:
                        if n[-len(ext):] == ext:
                                name = os.path.join(top, n)
-                               print 'Binhexing', name
-                               binhex.binhex(name, name + '.hqx')
+                               handler(name, n)
                                
 def dodir(name):
+       global TOP, project_files
+       TOP = name
        os.path.walk(name, walker, None)
+       
+       for creator in project_files.keys():
+               hexbincwprojects(creator)
+       project_files = {}
                                
 def main():
        if len(sys.argv) > 1: