def MigrationOptionParser(Source, Destinate, ToolName, VersionNumber = 1.0): # use clearer usage to override default usage message UsageString = "%s [-a] [-v|-q] [-o <output_file>] <input_file>" % ToolName Version = "%s Version %.2f" % (ToolName, VersionNumber) Copyright = "Copyright (c) 2007, Intel Corporation. All rights reserved." Parser = OptionParser(description=Copyright, version=Version, usage=UsageString) Parser.add_option("-o", "--output", dest="OutputFile", help="The name of the %s file to be created." % Destinate) Parser.add_option("-a", "--auto", dest="AutoWrite", action="store_true", default=False, help="Automatically create the %s file using the name of the %s file and replacing file extension" % (Source, Destinate)) Parser.add_option("-q", "--quiet", action="store_true", type=None, help="Disable all messages except FATAL ERRORS.") Parser.add_option("-v", "--verbose", action="store_true", type=None, help="Turn on verbose output with informational messages printed.") Options, Args = Parser.parse_args() # Set logging level if Options.verbose: EdkLogger.setLevel(EdkLogger.VERBOSE) elif Options.quiet: EdkLogger.setLevel(EdkLogger.QUIET) else: EdkLogger.setLevel(EdkLogger.INFO) # error check if len(Args) == 0: raise MigrationError(PARAMETER_MISSING, name="Input file", usage=Parser.get_usage()) if len(Args) > 1: raise MigrationError(PARAMETER_INVALID, name="Too many input files", usage=Parser.get_usage()) InputFile = Args[0] if not os.path.exists(InputFile): raise MigrationError(FILE_NOT_FOUND, name=InputFile) if Options.OutputFile: if Options.AutoWrite: raise MigrationError(OPTION_CONFLICT, arg1="-o", arg2="-a", usage=Parser.get_usage()) else: if Options.AutoWrite: Options.OutputFile = os.path.splitext(InputFile)[0] + "." + Destinate.lower() else: raise MigrationError(OPTION_MISSING, name="-o", usage=Parser.get_usage()) return Options, InputFile