git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8964 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			116 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| ## @file
 | |
| # Convert an XML-based FPD file to a text-based DSC file.
 | |
| #
 | |
| # Copyright (c) 2007, Intel Corporation
 | |
| # All rights reserved. This program and the accompanying materials
 | |
| # are licensed and made available under the terms and conditions of the BSD License
 | |
| # which accompanies this distribution.  The full text of the license may be found at
 | |
| # http://opensource.org/licenses/bsd-license.php
 | |
| #
 | |
| # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| #
 | |
| 
 | |
| ##
 | |
| # Import Modules
 | |
| #
 | |
| import os, re, sys, xml.dom.minidom  #XmlRoutines, EdkIIWorkspace
 | |
| from LoadFpd import LoadFpd
 | |
| from StoreDsc import StoreDsc
 | |
| from optparse import OptionParser
 | |
| 
 | |
| # Version and Copyright
 | |
| __version_number__ = "1.0"
 | |
| __version__ = "%prog Version " + __version_number__
 | |
| __copyright__ = "Copyright (c) 2007, Intel Corporation  All rights reserved."
 | |
| 
 | |
| ## Parse command line options
 | |
| #
 | |
| # Using standard Python module optparse to parse command line option of this tool.
 | |
| #
 | |
| # @retval Options   A optparse.Values object containing the parsed options
 | |
| # @retval Args      All the arguments got from the command line
 | |
| #
 | |
| def MyOptionParser():
 | |
|     """ Argument Parser """
 | |
|     usage = "%prog [options] input_filename"
 | |
|     parser = OptionParser(usage=usage,description=__copyright__,version="%prog " + str(__version_number__))
 | |
|     parser.add_option("-o", "--output", dest="outfile", help="Specific Name of the DSC file to create, otherwise it is the FPD filename with the extension repalced.")
 | |
|     parser.add_option("-a", "--auto", action="store_true", dest="autowrite", default=False, help="Automatically create output files and write the DSC file")
 | |
|     parser.add_option("-q", "--quiet", action="store_const", const=0, dest="verbose", help="Do not print any messages, just return either 0 for succes or 1 for failure")
 | |
|     parser.add_option("-v", "--verbose", action="count", dest="verbose", help="Do not print any messages, just return either 0 for succes or 1 for failure")
 | |
|     parser.add_option("-d", "--debug", action="store_true", dest="debug", default=False, help="Enable printing of debug messages.")
 | |
|     parser.add_option("-w", "--workspace", dest="workspace", default=str(os.environ.get('WORKSPACE')), help="Specify workspace directory.")
 | |
|     (options, args) = parser.parse_args(sys.argv[1:])
 | |
| 
 | |
|     return options,args
 | |
| 
 | |
| ## Entrance method
 | |
| #
 | |
| # This method mainly dispatch specific methods per the command line options.
 | |
| # If no error found, return zero value so the caller of this tool can know
 | |
| # if it's executed successfully or not.
 | |
| #
 | |
| # @retval 0     Tool was successful
 | |
| # @retval 1     Tool failed
 | |
| #
 | |
| def Main():
 | |
|     global Options
 | |
|     global Args
 | |
|     global WorkSpace
 | |
|     Options,Args = MyOptionParser()
 | |
| 
 | |
|     WorkSpace = ""
 | |
|     #print Options.workspace
 | |
|     if (Options.workspace == None):
 | |
|         print "ERROR: E0000: WORKSPACE not defined.\n  Please set the WORKSPACE environment variable to the location of the EDK II install directory."
 | |
|         sys.exit(1)
 | |
|     else:
 | |
|         WorkSpace = Options.workspace
 | |
|         if (Options.debug):
 | |
|             print "Using Workspace:", WorkSpace
 | |
|     try:
 | |
|         Options.verbose +=1
 | |
|     except:
 | |
|         Options.verbose = 1
 | |
|         pass
 | |
| 
 | |
|     InputFile = ""
 | |
|     if Args == []:
 | |
|         print "usage:" "%prog [options] input_filename"
 | |
|     else:
 | |
|         InputFile = Args[0]
 | |
|         #print InputFile
 | |
|     if InputFile != "":
 | |
|         FileName = InputFile
 | |
|         if ((Options.verbose > 1) | (Options.autowrite)):
 | |
|             print "FileName:",InputFile
 | |
|     else:
 | |
|         print "ERROR: E0001 - You must specify an input filename"
 | |
|         sys.exit(1)
 | |
| 
 | |
|     if (Options.outfile):
 | |
|         OutputFile = Options.outfile
 | |
|     else:
 | |
|        OutputFile = FileName.replace('.fpd', '.dsc')
 | |
| 
 | |
|     if ((Options.verbose > 2) or (Options.debug)):
 | |
|         print "Output Filename:", OutputFile
 | |
|         
 | |
|     try:
 | |
|         Platform = LoadFpd(FileName)
 | |
|         StoreDsc(OutputFile, Platform)
 | |
|         return 0
 | |
|     except Exception, e:
 | |
|         print e
 | |
|         return 1
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     sys.exit(Main())
 | |
|     #pass
 | |
|     #global Options
 | |
|     #global Args
 | |
|     #Options,Args = MyOptionParser()
 | |
|     
 | |
|     #Main()
 | |
|     #sys.exit(0) |