| ## @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) |