## @ CheckCodeBase.py # # Copyright (c) 2017, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent # ## import os import re import sys import time import shutil class FileChecker: def __init__(self): # sourceRoot == WORKSPACE # sourceRoot != PACKAGES_PATH self.sourceRoot = "" self.includeCoreList = ["\\CryptoPkg\\", "\\FatBinPkg\\", "\\FatPkg\\", "\\IntelFrameworkModulePkg\\", "\\IntelFrameworkPkg\\", "\\IntelFsp2Pkg\\", "\\IntelFsp2WrapperPkg\\", "\\IntelFspPkg\\", "\\IntelFspWrapperPkg\\", "\\IntelSiliconPkg\\", "\\MdeModulePkg\\", "\\MdePkg\\", "\\NetworkPkg\\", "\\PcAtChipsetPkg\\", "\\PerformancePkg\\", "\\SecurityPkg\\", "\\ShellBinPkg\\", "\\ShellPkg\\", "\\SignedCapsulePkg\\", "\\SourceLevelDebugPkg\\", "\\UefiCpuPkg\\"] self.includeList = self.includeCoreList self.excluseCoreList = ["\\BaseTools\\", "\\Conf\\", "\\Tools\\", "\\Build\\", "\\tool\\", "\\.svn", "\\.git", "\\Override\\", "\\SampleCode\\", "\\openssl"] self.excluseList = self.excluseCoreList self.usedModuleList = [] self.usedLibraryList = [] self.makefileList = [] self.usedIncludeFileList = [] self.usedModuleFileList = [] self.usedLibraryFileList = [] self.usedFileList = [] self.usedPackageList = [] self.allModuleList = [] self.allLibraryList = [] self.allDirList = [] self.allIncludeFileList = [] self.allModuleFileList = [] self.allLibraryFileList = [] self.allFileList = [] self.allPackageList = [] self.unusedModuleList = [] self.unusedLibraryList = [] self.unusedIncludeFileList = [] self.unusedModuleFileList = [] self.unusedLibraryFileList = [] self.unusedFileList = [] self.unusedPackageList = [] self.unusedPackageFileList = [] def CheckFile(self, file): if os.path.isfile(file): return file.decode('gbk') else: return "" def CheckDir(self, file): if os.path.isdir(file): return file.decode('gbk') else: return "" def IsIncludeFile(self, file): if (cmp (file[-2:], ".h") == 0) and (file.find ("Pkg\\Include") != -1): return True else: return False def IsLibraryFile(self, file): if (file.find ("Pkg\\Library") != -1): return True else: return False def CheckIncludeFile(self, file): if self.IsIncludeFile(file) and (self.IsInExclusiveList(file) == False): return file.decode('gbk') else: return "" def GetModulePathFromMakefile (self, file): makefile = open (file, "r") data = makefile.read () for line in data.split("\n"): # MODULE_DIR = c:\home\edkiigit\edk2\MdeModulePkg\Library\BaseSerialPortLib16550 if "MODULE_DIR =" in line: moduleDir = line.split(" = ")[1] # BUILD_DIR = c:\home\edkiigit\Build\KabylakeOpenBoardPkg\KabylakeRvp3\DEBUG_VS2015x86 if "BUILD_DIR =" in line: buildDir = line.split(" = ")[1] makefile.close() # record sourceRoot = c:\home\Edk-II self.sourceRoot = buildDir.split("\\Build\\")[0] if (self.IsInExclusiveList(moduleDir) == False): self.AddPackageList(moduleDir, self.usedPackageList) return moduleDir def AddPackageList(self, file, packageList): packageName = file.split("Pkg") packagePath = packageName[0] + "Pkg" if packagePath not in packageList: packageList.append(packagePath) def IsInPackageList(self, file): for package in self.usedPackageList: if file.find(package) != -1: return True return False def CheckUsedModule(self, file): if (cmp (file[-8:], "Makefile") == 0) and (self.IsLibraryFile(file) == False): finalDir = self.GetModulePathFromMakefile(file) if self.IsInExclusiveList(finalDir): return "" return finalDir.decode('gbk') else: return "" def CheckUsedLibrary(self, file): if (cmp (file[-8:], "Makefile") == 0) and self.IsLibraryFile(file): finalDir = self.GetModulePathFromMakefile(file) if self.IsInExclusiveList(finalDir): return "" return finalDir.decode('gbk') else: return "" def CheckMakefile(self, file): if cmp (file[-8:], "Makefile") == 0: finalDir = self.GetModulePathFromMakefile(file) if self.IsInExclusiveList(finalDir): return "" return file.decode('gbk') else: return "" def ParseMakefile(self, fileName): try : file = open(fileName) except Exception: print "fail to open " + fileName return try: while 1: line = file.readline() if not line: break if cmp (line[0], "#") == 0: continue newline = line[:-1] #print "check - (" + newline + ")" headFile = "" #COMMON_DEPS = $(WORKSPACE)\MdePkg\Include\Protocol\DebugSupport.h \ # $(WORKSPACE)\MdePkg\Include\Ppi\PciCfg2.h \ #$(OUTPUT_DIR)\X64\Semaphore.obj : $(WORKSPACE)\UefiCpuPkg\Include\Library\MtrrLib.h #MatchString = "[\w\\\s\=\:\.\(\)\$]*\$\(WORKSPACE\)([\\\w]*\.h)[\\w\s]*" MatchString1 = "(COMMON_DEPS = | |\$\(OUTPUT_DIR\)[\\\\\w]*.obj : )\$\(WORKSPACE\)\\\\([\\\\\w]*\.h)" match1 = re.match(MatchString1, newline) if match1 is not None: #print "match1 - " + newline #print "0 - " + match1.group(0) #print "1 - " + match1.group(1) #print "2 - " + match1.group(2) headFile = match1.group(2) if (cmp (headFile, "") != 0) and self.IsIncludeFile(headFile): finalPath = os.path.join (self.sourceRoot, headFile) if (self.IsInExclusiveList(finalPath) == False) and (finalPath not in self.usedIncludeFileList): self.usedIncludeFileList.append(finalPath) self.AddPackageList (finalPath, self.usedPackageList) finally: file.close() return def IsInIncludeList(self, file): for list in self.includeList: result = file.find(list); if (result != -1): return True return False def IsInExclusiveList(self, file): if self.IsInIncludeList(file) == False: return True for list in self.excluseList: result = file.find(list); if (result != -1): return True for list in self.excluseList: full_file = file + "\\" result = full_file.find(list); if (result != -1): return True return False def IsFinalDir(self, file): for s in os.listdir(file): newFile=os.path.join(file,s) if cmp (newFile[-4:], ".inf") == 0: return True return False def IsInUsedModuleList(self, file): if file in self.usedModuleList: return True else: return False def IsInUsedLibraryList(self, file): if file in self.usedLibraryList: return True else: return False def IsUsedModule(self, file): for used in self.usedModuleList: final = used + "\\" result = file.find(final); if (result != -1): return True return False def IsUsedLibrary(self, file): for used in self.usedLibraryList: final = used + "\\" result = file.find(final); if (result != -1): return True return False def IsUnusedModule(self, file): for unused in self.unusedModuleList: final = unused + "\\" result = file.find(final); if (result != -1): return True return False def IsUnusedLibrary(self, file): for unused in self.unusedLibraryList: final = unused + "\\" result = file.find(final); if (result != -1): return True return False def IsUnusedPackage(self, file): for unused in self.unusedPackageList: final = unused + "\\" result = file.find(final); if (result != -1): return True return False def CheckUnusedModule(self, file): if os.path.isdir(file): if (self.IsInExclusiveList(file) == False) and self.IsFinalDir(file) and (self.IsInUsedModuleList(file) == False) and (self.IsLibraryFile(file) == False): return file.decode('gbk') else: return "" else: return "" def CheckUnusedLibrary(self, file): if os.path.isdir(file): if (self.IsInExclusiveList(file) == False) and self.IsFinalDir(file) and (self.IsInUsedLibraryList(file) == False) and self.IsLibraryFile(file): return file.decode('gbk') else: return "" else: return "" def CheckAllModule(self, file): if os.path.isdir(file): if (self.IsInExclusiveList(file) == False) and self.IsFinalDir(file) and (self.IsLibraryFile(file) == False): return file.decode('gbk') else: return "" else: return "" def CheckAllLibrary(self, file): if os.path.isdir(file): if (self.IsInExclusiveList(file) == False) and self.IsFinalDir(file) and self.IsLibraryFile(file): return file.decode('gbk') else: return "" else: return "" def CheckAllDir(self, file): if os.path.isdir(file): if (self.IsInExclusiveList(file) == False): return file.decode('gbk') else: return "" else: return "" def CheckAllModuleFile(self, file): if os.path.isfile(file): if (self.IsInExclusiveList(file) == False) and (self.IsUsedModule(file) or self.IsUnusedModule(file)) and (self.IsLibraryFile(file) == False): return file.decode('gbk') else: return "" else: return "" def CheckAllLibraryFile(self, file): if os.path.isfile(file): if (self.IsInExclusiveList(file) == False) and (self.IsUsedLibrary(file) or self.IsUnusedLibrary(file)) and self.IsLibraryFile(file): return file.decode('gbk') else: return "" else: return "" def CheckAllFile(self, file): if os.path.isfile(file): if (self.IsInExclusiveList(file) == False): return file.decode('gbk') else: return "" else: return "" def CheckUsedModuleFile(self, file): if os.path.isfile(file): if (self.IsInExclusiveList(file) == False) and self.IsUsedModule(file): return file.decode('gbk') else: return "" else: return "" def CheckUsedLibraryFile(self, file): if os.path.isfile(file): if (self.IsInExclusiveList(file) == False) and self.IsUsedLibrary(file): return file.decode('gbk') else: return "" else: return "" def CheckUnusedModuleFile(self, file): if os.path.isfile(file): if (self.IsInExclusiveList(file) == False) and self.IsUnusedModule(file): return file.decode('gbk') else: return "" else: return "" def CheckUnusedLibraryFile(self, file): if os.path.isfile(file): if (self.IsInExclusiveList(file) == False) and self.IsUnusedLibrary(file): return file.decode('gbk') else: return "" else: return "" def CheckUnusedPackageFile(self, file): if os.path.isfile(file): if (self.IsInExclusiveList(file) == False) and self.IsUnusedPackage(file): return file.decode('gbk') else: return "" else: return "" def GetFileList(self, dir, fileList, checkFunc): newDir = dir AppendName = checkFunc (dir) if cmp (AppendName, "") != 0: #print "AppendName = " + AppendName if AppendName not in fileList: fileList.append(AppendName) if os.path.isdir(dir): for sub in os.listdir(dir): newDir = os.path.join(dir,sub) self.GetFileList(newDir, fileList, checkFunc) return fileList def DeleteEmptyDir(self, dir): if os.path.exists(dir) == False: return if os.path.isdir(dir): for sub in os.listdir(dir): newDir = os.path.join(dir,sub) if (os.path.isdir(newDir) == True): self.DeleteEmptyDir(newDir) if not os.listdir(dir): print "deleting empty " + dir os.rmdir(dir) def DeleteEmptyDirList(self, fileList): for file in fileList: self.DeleteEmptyDir(file) def DeleteUnusedFile(self, fileList): for file in fileList: if os.path.exists(file) == False: continue print "deleting " + file try : if os.path.isdir(file): shutil.rmtree(file) if os.path.isfile(file): os.remove(file) except : print "deleting error (" + file + ")" def PrintFileTime(self, file): statinfo = os.stat(file) strucatime = time.localtime(statinfo.st_atime) print "atime: " + str(statinfo.st_atime) + " (" + str(strucatime.tm_year) + "." + str(strucatime.tm_mon) + "." + str(strucatime.tm_mday) + " " + str(strucatime.tm_hour) + ":" + str(strucatime.tm_min) + ":" + str(strucatime.tm_sec) + ")" strucctime = time.localtime(statinfo.st_ctime) print "ctime: " + str(statinfo.st_ctime) + " (" + str(strucctime.tm_year) + "." + str(strucctime.tm_mon) + "." + str(strucctime.tm_mday) + " " + str(strucctime.tm_hour) + ":" + str(strucctime.tm_min) + ":" + str(strucctime.tm_sec) + ")" strucmtime = time.localtime(statinfo.st_mtime) print "mtime: " + str(statinfo.st_mtime) + " (" + str(strucmtime.tm_year) + "." + str(strucmtime.tm_mon) + "." + str(strucmtime.tm_mday) + " " + str(strucmtime.tm_hour) + ":" + str(strucmtime.tm_min) + ":" + str(strucmtime.tm_sec) + ")" def TouchFileTime(self, file): #currentTime = time.time() #os.utime(file, (currentTime, currentTime)) os.utime(file, None) def TouchFileListTime(self, fileList): for file in fileList: self.TouchFileTime(file) def PrintFileList(self, fileList): for file in fileList: print file print " Count - " + str(len(fileList)) def SortFileList(self, fileList): fileList.sort() def PrintFileListTime(self, fileList): for file in fileList: print file self.PrintFileTime(file) def GetUsedModuleList(self): if (len(self.usedModuleList) == 0): self.usedModuleList = self.GetFileList(sys.argv[1], [], self.CheckUsedModule) self.SortFileList(self.usedModuleList) def GetUsedLibraryList(self): if (len(self.usedLibraryList) == 0): self.usedLibraryList = self.GetFileList(sys.argv[1], [], self.CheckUsedLibrary) self.SortFileList(self.usedLibraryList) def GetMakefileList(self): if (len(self.makefileList) == 0): self.GetUsedModuleList() self.makefileList = self.GetFileList(sys.argv[1], [], self.CheckMakefile) def GetUsedIncludeFileList(self): if (len(self.usedIncludeFileList) == 0): self.GetMakefileList() #print "\nMakefile:" #fileChecker.PrintFileList (fileChecker.makefileList) for file in self.makefileList: self.ParseMakefile(file) self.SortFileList(self.usedIncludeFileList) def GetUsedModuleFileList(self): if (len(self.usedModuleFileList) == 0): self.GetUsedModuleList() self.usedModuleFileList = self.GetFileList(self.sourceRoot, [], self.CheckUsedModuleFile) self.SortFileList(self.usedModuleFileList) def GetUsedLibraryFileList(self): if (len(self.usedLibraryFileList) == 0): self.GetUsedLibraryList() self.usedLibraryFileList = self.GetFileList(self.sourceRoot, [], self.CheckUsedLibraryFile) self.SortFileList(self.usedLibraryFileList) def GetUsedFileList(self): if (len(self.usedFileList) == 0): self.GetAllFileList() self.GetUnusedFileList() self.usedFileList = [] for file in self.allFileList: if (file not in self.unusedFileList) and self.IsInPackageList(file): self.usedFileList.append(file) self.SortFileList(self.usedFileList) def GetUsedPackageList(self): self.GetUsedModuleList() self.GetUsedLibraryList() self.GetUsedIncludeFileList() self.SortFileList(self.usedPackageList) def GetAllModuleList(self): if (len(self.allModuleList) == 0): self.GetUsedModuleList() self.allModuleList = self.GetFileList(self.sourceRoot, [], self.CheckAllModule) self.SortFileList(self.allModuleList) def GetAllLibraryList(self): if (len(self.allLibraryList) == 0): self.GetUsedLibraryList() self.allLibraryList = self.GetFileList(self.sourceRoot, [], self.CheckAllLibrary) self.SortFileList(self.allLibraryList) def GetAllIncludeFileList(self): if (len(self.allIncludeFileList) == 0): self.GetUsedModuleList() self.allIncludeFileList = self.GetFileList(self.sourceRoot, [], self.CheckIncludeFile) self.SortFileList(self.allIncludeFileList) def GetAllModuleFileList(self): if (len(self.allFileList) == 0): self.GetUsedModuleList() self.GetUnusedModuleList() self.allModuleFileList = self.GetFileList(self.sourceRoot, [], self.CheckAllModuleFile) self.SortFileList(self.allModuleFileList) def GetAllLibraryFileList(self): if (len(self.allFileList) == 0): self.GetUsedLibraryList() self.GetUnusedLibraryList() self.allLibraryFileList = self.GetFileList(self.sourceRoot, [], self.CheckAllLibraryFile) self.SortFileList(self.allLibraryFileList) def GetAllFileList(self): if (len(self.allFileList) == 0): self.GetUsedModuleList() self.allFileList = self.GetFileList(self.sourceRoot, [], self.CheckAllFile) self.SortFileList(self.allFileList) def GetAllPackageList(self): if (len(self.allPackageList) == 0): self.GetAllFileList() prefixLength = len(self.sourceRoot) for file in self.allFileList: finalPath = os.path.join (self.sourceRoot, file[prefixLength + 1:]) self.AddPackageList(finalPath, self.allPackageList) self.SortFileList(self.allPackageList) def GetUnusedModuleList(self): if (len(self.unusedModuleList) == 0): self.GetUsedModuleList() self.unusedModuleList = self.GetFileList(self.sourceRoot, [], self.CheckUnusedModule) def GetUnusedLibraryList(self): if (len(self.unusedLibraryList) == 0): self.GetUsedLibraryList() self.unusedLibraryList = self.GetFileList(self.sourceRoot, [], self.CheckUnusedLibrary) def GetUnusedIncludeFileList(self): if (len(self.unusedIncludeFileList) == 0): self.GetUsedIncludeFileList() self.GetAllIncludeFileList() self.unusedIncludeFileList = [] for file in self.allIncludeFileList: if file not in self.usedIncludeFileList: self.unusedIncludeFileList.append(file) self.SortFileList(self.unusedIncludeFileList) def GetUnusedModuleFileList(self): if (len(self.unusedModuleFileList) == 0): self.GetUnusedModuleList () self.unusedModuleFileList = self.GetFileList(self.sourceRoot, [], self.CheckUnusedModuleFile) self.SortFileList(self.unusedModuleFileList) def GetUnusedLibraryFileList(self): if (len(self.unusedLibraryFileList) == 0): self.GetUnusedLibraryList () self.unusedLibraryFileList = self.GetFileList(self.sourceRoot, [], self.CheckUnusedLibraryFile) self.SortFileList(self.unusedLibraryFileList) def GetUnusedFileList(self): if (len(self.unusedFileList) == 0): self.GetUnusedIncludeFileList() self.GetUnusedModuleFileList() self.GetUnusedLibraryFileList() self.GetUnusedPackageList() self.unusedPackageFileList = self.GetFileList(self.sourceRoot, [], self.CheckUnusedPackageFile) self.unusedFileList = [] self.unusedFileList.extend(self.unusedIncludeFileList) self.unusedFileList.extend(self.unusedModuleFileList) self.unusedFileList.extend(self.unusedLibraryFileList) for file in self.unusedPackageFileList: if file not in self.unusedFileList: self.unusedFileList.append(file) self.SortFileList(self.unusedFileList) def GetUnusedPackageList(self): if (len(self.unusedPackageList) == 0): self.GetUsedPackageList() self.GetAllPackageList() for package in self.allPackageList: if package not in self.usedPackageList: self.unusedPackageList.append(package) self.SortFileList(self.unusedPackageList) # # Print out the usage # def usage(): print "Usage: \n\tCheckCodeBase used|unused|all" print " used - used library, modules, include file, library files, module files, all used files" print " unused - unused library, modules, include file, library files, module files, all unused files" print " all - all library, modules, include file, library files, module files, all files" print " library : the directory of a library" print " module : the directory of a driver" print " include file : the header files in include directory" print " library file : all files in a library directory" print " module file : all files in a driver directory" print " all file : all files in project, including any other metadata files or batch files" #print "Usage: \n\tCheckCodeBase time|touch" print "For Example: \n\tCheckCodeBase Build\KabylakeOpenBoardPkg\KabylakeRvp3\DEBUG_VS2015x86 used" def main(): global FileChecker fileChecker = FileChecker() if len(sys.argv) < 3: usage() return 1 if cmp (sys.argv[2], "used") == 0: fileChecker.GetUsedModuleList () print "\n Used Module List:" fileChecker.PrintFileList (fileChecker.usedModuleList) fileChecker.GetUsedLibraryList () print "\n Used Library List:" fileChecker.PrintFileList (fileChecker.usedLibraryList) fileChecker.GetUsedIncludeFileList() print "\n Used Include File List:" fileChecker.PrintFileList (fileChecker.usedIncludeFileList) fileChecker.GetUsedModuleFileList() print "\n Used Module File List:" fileChecker.PrintFileList (fileChecker.usedModuleFileList) fileChecker.GetUsedLibraryFileList() print "\n Used Library File List:" fileChecker.PrintFileList (fileChecker.usedLibraryFileList) fileChecker.GetUsedFileList() print "\n All Used File List:" fileChecker.PrintFileList (fileChecker.usedFileList) fileChecker.GetUsedPackageList() print "\n Used Package List:" fileChecker.PrintFileList (fileChecker.usedPackageList) print "\n ==== Used Module Summary ====" print " Module Count - " + str(len(fileChecker.usedModuleList)) print " Library Count - " + str(len(fileChecker.usedLibraryList)) print " Include File Count - " + str(len(fileChecker.usedIncludeFileList)) print " Module File Count - " + str(len(fileChecker.usedModuleFileList)) print " Library File Count - " + str(len(fileChecker.usedLibraryFileList)) print " All File Count - " + str(len(fileChecker.usedFileList)) elif cmp (sys.argv[2], "all") == 0: fileChecker.GetAllModuleList() print "\n All Module List:" fileChecker.PrintFileList (fileChecker.allModuleList) fileChecker.GetAllLibraryList() print "\n All Library List:" fileChecker.PrintFileList (fileChecker.allLibraryList) fileChecker.GetAllIncludeFileList() print "\n All Include File List:" fileChecker.PrintFileList (fileChecker.allIncludeFileList) fileChecker.GetAllModuleFileList() print "\n All Module File List:" fileChecker.PrintFileList (fileChecker.allModuleFileList) fileChecker.GetAllLibraryFileList() print "\n All Library File List:" fileChecker.PrintFileList (fileChecker.allLibraryFileList) fileChecker.GetAllFileList() print "\n All File List:" fileChecker.PrintFileList (fileChecker.allFileList) fileChecker.GetAllPackageList() print "\n All Package List:" fileChecker.PrintFileList (fileChecker.allPackageList) print "\n ==== All Module Summary ====" print " Module Count - " + str(len(fileChecker.allModuleList)) print " Library Count - " + str(len(fileChecker.allLibraryList)) print " Include File Count - " + str(len(fileChecker.allIncludeFileList)) print " Module File Count - " + str(len(fileChecker.allModuleFileList)) print " Library File Count - " + str(len(fileChecker.allLibraryFileList)) print " All File Count - " + str(len(fileChecker.allFileList)) elif cmp (sys.argv[2], "unused") == 0: fileChecker.GetUnusedModuleList() print "\n Unused Module List:" fileChecker.PrintFileList (fileChecker.unusedModuleList) fileChecker.GetUnusedLibraryList() print "\n Unused Library List:" fileChecker.PrintFileList (fileChecker.unusedLibraryList) fileChecker.GetUnusedIncludeFileList() print "\n Unused Include List:" fileChecker.PrintFileList (fileChecker.unusedIncludeFileList) fileChecker.GetUnusedModuleFileList() print "\n Unused Module File List:" fileChecker.PrintFileList (fileChecker.unusedModuleFileList) fileChecker.GetUnusedLibraryFileList() print "\n Unused Library File List:" fileChecker.PrintFileList (fileChecker.unusedLibraryFileList) fileChecker.GetUnusedFileList() print "\n Unused File List:" fileChecker.PrintFileList (fileChecker.unusedFileList) fileChecker.GetUnusedPackageList() print "\n Unused Package List:" fileChecker.PrintFileList (fileChecker.unusedPackageList) print "\n ==== Unused Module Summary ====" print " Module Count - " + str(len(fileChecker.unusedModuleList)) print " Library Count - " + str(len(fileChecker.unusedLibraryList)) print " Include File Count - " + str(len(fileChecker.unusedIncludeFileList)) print " Module File Count - " + str(len(fileChecker.unusedModuleFileList)) print " Library File Count - " + str(len(fileChecker.unusedLibraryFileList)) print " All File Count - " + str(len(fileChecker.unusedFileList)) elif cmp (sys.argv[2], "delete_unused") == 0: fileChecker.GetUnusedModuleList() fileChecker.GetUnusedLibraryList() fileChecker.GetUnusedIncludeFileList() fileChecker.GetUnusedPackageList() fileChecker.DeleteUnusedFile(fileChecker.unusedPackageList) fileChecker.DeleteUnusedFile(fileChecker.unusedModuleList) fileChecker.DeleteUnusedFile(fileChecker.unusedLibraryList) fileChecker.DeleteUnusedFile(fileChecker.unusedIncludeFileList) fileChecker.allDirList = fileChecker.GetFileList(fileChecker.sourceRoot, [], fileChecker.CheckAllDir) fileChecker.DeleteEmptyDirList(fileChecker.allDirList) elif cmp (sys.argv[2], "time") == 0: fileChecker.allDirList = fileChecker.GetFileList(sys.argv[1], [], fileChecker.CheckFile) fileChecker.PrintFileListTime(fileChecker.allDirList) elif cmp (sys.argv[2], "touch") == 0: fileChecker.allDirList = fileChecker.GetFileList(sys.argv[1], [], fileChecker.CheckFile) fileChecker.TouchFileListTime(fileChecker.allDirList) else: print "Unknown - " + sys.argv[2] if __name__ == '__main__': sys.exit(main())