mirror of
https://github.com/python/cpython.git
synced 2025-09-15 05:06:12 +00:00
- 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.
This commit is contained in:
parent
2befa48926
commit
388fbf3d4a
3 changed files with 159 additions and 49 deletions
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue