blob: e0e84158c67a0f13d4a9fc8f6f5aaaf03ea58565 [file] [log] [blame]
Jack Jansenb8da8d72002-08-09 13:42:55 +00001# 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
7import macresource
8import os
9import sys
10import getopt
11
12class NoArgsError(Exception):
Tim Peters182b5ac2004-07-18 06:16:08 +000013 pass
14
Georg Brandlc76473d2007-09-03 07:27:49 +000015def handler(arg1, dirname, fnames):
16 verbose, force = arg1
Tim Peters182b5ac2004-07-18 06:16:08 +000017 for fn in fnames:
18 if fn[-5:] == '.rsrc' and fn[-13:] != '.rsrc.df.rsrc':
19 if force:
20 try:
21 os.unlink(os.path.join(dirname, fn + '.df.rsrc'))
22 except IOError:
23 pass
24 macresource.open_pathname(os.path.join(dirname, fn), verbose=verbose)
25
Jack Jansenb8da8d72002-08-09 13:42:55 +000026def main():
Tim Peters182b5ac2004-07-18 06:16:08 +000027 try:
28 opts, args = getopt.getopt(sys.argv[1:], 'vf')
29 if not args:
30 raise NoArgsError
31 except (getopt.GetoptError, NoArgsError):
32 sys.stderr.write('Usage: cachersrc.py dirname ...\n')
33 sys.exit(1)
34 verbose = 0
35 force = 0
36 for o, v in opts:
37 if o == '-v':
38 verbose = 1
39 if o == '-f':
40 force = 1
41 for dir in sys.argv[1:]:
42 os.path.walk(dir, handler, (verbose, force))
43
Jack Jansenb8da8d72002-08-09 13:42:55 +000044if __name__ == '__main__':
Tim Peters182b5ac2004-07-18 06:16:08 +000045 main()