[Python-checkins] python/dist/src/Mac/scripts BuildApplet.py,1.13,1.14

jackjansen@users.sourceforge.net jackjansen@users.sourceforge.net
Sun, 09 Jun 2002 15:08:54 -0700


Update of /cvsroot/python/python/dist/src/Mac/scripts
In directory usw-pr-cvs1:/tmp/cvs-serv31258/Mac/scripts

Modified Files:
	BuildApplet.py 
Log Message:
- 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.


Index: BuildApplet.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Mac/scripts/BuildApplet.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** BuildApplet.py	31 Jul 1998 09:44:19 -0000	1.13
--- BuildApplet.py	9 Jun 2002 22:08:52 -0000	1.14
***************
*** 16,20 ****
  import EasyDialogs
  import buildtools
! 
  
  def main():
--- 16,20 ----
  import EasyDialogs
  import buildtools
! import getopt
  
  def main():
***************
*** 55,66 ****
  	else:
  		
  		# Loop over all files to be processed
! 		for filename in sys.argv[1:]:
  			cr, tp = MacOS.GetCreatorAndType(filename)
  			if tp == 'APPL':
! 				buildtools.update(template, filename, '')
  			else:
! 				buildtools.process(template, filename, '', 1)
  
  
  if __name__ == '__main__':
--- 55,123 ----
  	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 args:
  			cr, tp = MacOS.GetCreatorAndType(filename)
  			if tp == 'APPL':
! 				buildtools.update(template, filename, dstfilename)
  			else:
! 				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__':