Added 'list_only' option (and modified 'run()' to respect it).
[python/dscho.git] / Mac / scripts / BuildApplet.py
blobb57c425b110cc27e50ee789f563321f42606bfa7
1 """Create an applet from a Python script.
3 This puts up a dialog asking for a Python source file ('TEXT').
4 The output is a file with the same name but its ".py" suffix dropped.
5 It is created by copying an applet template and then adding a 'PYC '
6 resource named __main__ containing the compiled, marshalled script.
7 """
10 import sys
11 sys.stdout = sys.stderr
13 import os
14 import macfs
15 import MacOS
16 import EasyDialogs
17 import buildtools
20 def main():
21 try:
22 buildapplet()
23 except buildtools.BuildError, detail:
24 EasyDialogs.Message(detail)
27 def buildapplet():
28 buildtools.DEBUG=1
30 # Find the template
31 # (there's no point in proceeding if we can't find it)
33 template = buildtools.findtemplate()
35 # Ask for source text if not specified in sys.argv[1:]
37 if not sys.argv[1:]:
38 srcfss, ok = macfs.PromptGetFile('Select Python source or applet:', 'TEXT', 'APPL')
39 if not ok:
40 return
41 filename = srcfss.as_pathname()
42 tp, tf = os.path.split(filename)
43 if tf[-3:] == '.py':
44 tf = tf[:-3]
45 else:
46 tf = tf + '.applet'
47 dstfss, ok = macfs.StandardPutFile('Save application as:', tf)
48 if not ok: return
49 dstfilename = dstfss.as_pathname()
50 cr, tp = MacOS.GetCreatorAndType(filename)
51 if tp == 'APPL':
52 buildtools.update(template, filename, dstfilename)
53 else:
54 buildtools.process(template, filename, dstfilename, 1)
55 else:
57 # Loop over all files to be processed
58 for filename in sys.argv[1:]:
59 cr, tp = MacOS.GetCreatorAndType(filename)
60 if tp == 'APPL':
61 buildtools.update(template, filename, '')
62 else:
63 buildtools.process(template, filename, '', 1)
66 if __name__ == '__main__':
67 main()