Commit 388fbf3d authored by Jack Jansen's avatar Jack Jansen

- Better commandline interface to BuildApplet, complete with options,

  verbose output to the console, etc.
- Allow Cocoa applets to be built with BuildApplet.

No full testing has been done yet to ensure OS9 operation hasn't suffered.
parent 2befa489
This diff is collapsed.
......@@ -22,6 +22,8 @@
<key>CFBundleGetInfoString</key>
<string>%(appletname)s, a Python applet</string>
%(cocoainfo)s
<key>CFBundleIconFile</key>
<string>PythonApplet.icns</string>
......
......@@ -15,7 +15,7 @@ import macfs
import MacOS
import EasyDialogs
import buildtools
import getopt
def main():
try:
......@@ -54,14 +54,71 @@ def buildapplet():
buildtools.process(template, filename, dstfilename, 1)
else:
SHORTOPTS = "o:r:ne:v?"
LONGOPTS=("output=", "resource=", "noargv", "extra=", "verbose", "help")
try:
options, args = getopt.getopt(sys.argv[1:], SHORTOPTS, LONGOPTS)
except getopt.error:
usage()
if options and len(args) > 1:
sys.stderr.write("Cannot use options when specifying multiple input files")
sys.exit(1)
dstfilename = None
rsrcfilename = None
raw = 0
extras = []
verbose = None
for opt, arg in options:
if opt in ('-o', '--output'):
dstfilename = arg
elif opt in ('-r', '--resource'):
rsrcfilename = arg
elif opt in ('-n', '--noargv'):
raw = 1
elif opt in ('-e', '--extra'):
extras.append(arg)
elif opt in ('-v', '--verbose'):
verbose = Verbose()
elif opt in ('-?', '--help'):
usage()
# Loop over all files to be processed
for filename in sys.argv[1:]:
for filename in args:
cr, tp = MacOS.GetCreatorAndType(filename)
if tp == 'APPL':
buildtools.update(template, filename, '')
buildtools.update(template, filename, dstfilename)
else:
buildtools.process(template, filename, '', 1)
buildtools.process(template, filename, dstfilename, 1,
rsrcname=rsrcfilename, others=extras, raw=raw, progress=verbose)
def usage():
print "BuildApplet creates an application from a Python source file"
print "Usage:"
print " BuildApplet interactive, single file, no options"
print " BuildApplet src1.py src2.py ... non-interactive multiple file"
print " BuildApplet [options] src.py non-interactive single file"
print "Options:"
print " --output o Output file; default based on source filename, short -o"
print " --resource r Resource file; default based on source filename, short -r"
print " --noargv Build applet without drag-and-drop sys.argv emulation, short -n, OSX only"
print " --extra f Extra file to put in .app bundle, short -e, OSX only"
print " --verbose Verbose, short -v"
print " --help This message, short -?"
sys.exit(1)
class Verbose:
"""This class mimics EasyDialogs.ProgressBar but prints to stderr"""
def __init__(self, *args):
if args and args[0]:
self.label(args[0])
def set(self, *args):
pass
def inc(self, *args):
pass
def label(self, str):
sys.stderr.write(str+'\n')
if __name__ == '__main__':
main()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment