def main()

in UefiTestingPkg/AuditTests/PagingAudit/Windows/PagingReportGenerator.py [0:0]


def main():

    parser = argparse.ArgumentParser(description='Parse Paging information and generate HTML report')
    parser.add_argument('-i', "--InputFolderPath", dest="InputFolder", help="Path to folder containing the DAT files from the UEFI shell tool (default is CWD)", default=os.getcwd())
    parser.add_argument('-o', "--OutputReport", dest="OutputReport", help="Path to output html report (default is report.html)", default=os.path.join(os.getcwd(), "report.html"))
    parser.add_argument('-p', "--PlatformName", dest="PlatformName", help="Name of Platform.  Will show up on report", default="Test Platform")
    parser.add_argument('-t', "--type", choices=['SMM', 'DXE'], dest="Type", help="SMM or DXE Paging Report", required=True)
    parser.add_argument("--PlatformVersion", dest="PlatformVersion", help="Version of Platform.  Will show up report", default="1.0.0")

    #Turn on dubug level logging
    parser.add_argument("--debug", action="store_true", dest="debug", help="turn on debug logging level for file log",  default=False)
    #Output debug log
    parser.add_argument("-l", dest="OutputLog", help="Create an output log file: ie -l out.txt", default=None)

    options = parser.parse_args()

    #setup file based logging if outputReport specified
    if(options.OutputLog):
        if(len(options.OutputLog) < 2):
            logging.critical("the output log file parameter is invalid")
            return -2
        else:
            #setup file based logging
            filelogger = logging.FileHandler(filename=options.OutputLog, mode='w')
            if(options.debug):
                filelogger.setLevel(logging.DEBUG)
            else:
                filelogger.setLevel(logging.INFO)

            filelogger.setFormatter(formatter)
            logging.getLogger('').addHandler(filelogger)

    logging.info("Log Started: " + datetime.datetime.strftime(datetime.datetime.now(), "%A, %B %d, %Y %I:%M%p" ))

    #Do parameter validation
    if(options.InputFolder is None or not os.path.isdir(options.InputFolder)):
        logging.critical("Invalid Input Folder Path to folder containing DAT files")
        return -5

    if(options.OutputReport is None):
        logging.critical("No OutputReport Path")
        return -6

    logging.debug("Input Folder Path is: %s" % options.InputFolder)
    logging.debug("Output Report is: %s" % options.OutputReport)

    spt = ParsingTool(options.InputFolder, options.PlatformName, options.PlatformVersion, options.Type)
    spt.Parse()
    return spt.OutputHtmlReport(VERSION, options.OutputReport)