Home | History | Annotate | Download | only in scripts
      1 # Scan the tree passed as argv[0] for .rsrc files, skipping .rsrc.df.rsrc
      2 # files, and open these. The effect of this is to create the .rsrc.df.rsrc
      3 # cache files if needed.
      4 # These are needed on OSX: the .rsrc files are in reality AppleSingle-encoded
      5 # files. We decode the resources into a datafork-based resource file.
      6 
      7 import macresource
      8 import os
      9 import sys
     10 import getopt
     11 
     12 class NoArgsError(Exception):
     13     pass
     14 
     15 def handler((verbose, force), dirname, fnames):
     16     for fn in fnames:
     17         if fn[-5:] == '.rsrc' and fn[-13:] != '.rsrc.df.rsrc':
     18             if force:
     19                 try:
     20                     os.unlink(os.path.join(dirname, fn + '.df.rsrc'))
     21                 except IOError:
     22                     pass
     23             macresource.open_pathname(os.path.join(dirname, fn), verbose=verbose)
     24 
     25 def main():
     26     try:
     27         opts, args = getopt.getopt(sys.argv[1:], 'vf')
     28         if not args:
     29             raise NoArgsError
     30     except (getopt.GetoptError, NoArgsError):
     31         sys.stderr.write('Usage: cachersrc.py dirname ...\n')
     32         sys.exit(1)
     33     verbose = 0
     34     force = 0
     35     for o, v in opts:
     36         if o == '-v':
     37             verbose = 1
     38         if o == '-f':
     39             force = 1
     40     for dir in sys.argv[1:]:
     41         os.path.walk(dir, handler, (verbose, force))
     42 
     43 if __name__ == '__main__':
     44     main()
     45