summaryrefslogtreecommitdiff
path: root/BaseTools/Scripts/FormatDosFiles.py
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools/Scripts/FormatDosFiles.py')
-rw-r--r--BaseTools/Scripts/FormatDosFiles.py214
1 files changed, 107 insertions, 107 deletions
diff --git a/BaseTools/Scripts/FormatDosFiles.py b/BaseTools/Scripts/FormatDosFiles.py
index e119334ded..748aaad360 100644
--- a/BaseTools/Scripts/FormatDosFiles.py
+++ b/BaseTools/Scripts/FormatDosFiles.py
@@ -1,107 +1,107 @@
-# @file FormatDosFiles.py
-# This script format the source files to follow dos style.
-# It supports Python2.x and Python3.x both.
-#
-# Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-#
-# Import Modules
-#
-from __future__ import print_function
-import argparse
-import os
-import os.path
-import re
-import sys
-import copy
-
-__prog__ = 'FormatDosFiles'
-__version__ = '%s Version %s' % (__prog__, '0.10 ')
-__copyright__ = 'Copyright (c) 2018-2019, Intel Corporation. All rights reserved.'
-__description__ = 'Convert source files to meet the EDKII C Coding Standards Specification.\n'
-DEFAULT_EXT_LIST = ['.h', '.c', '.nasm', '.nasmb', '.asm', '.S', '.inf', '.dec', '.dsc', '.fdf', '.uni', '.asl', '.aslc', '.vfr', '.idf', '.txt', '.bat', '.py']
-
-#For working in python2 and python3 environment, re pattern should use binary string, which is bytes type in python3.
-#Because in python3,read from file in binary mode will return bytes type,and in python3 bytes type can not be mixed with str type.
-def FormatFile(FilePath, Args):
- with open(FilePath, 'rb') as Fd:
- Content = Fd.read()
- # Convert the line endings to CRLF
- Content = re.sub(br'([^\r])\n', br'\1\r\n', Content)
- Content = re.sub(br'^\n', br'\r\n', Content, flags=re.MULTILINE)
- # Add a new empty line if the file is not end with one
- Content = re.sub(br'([^\r\n])$', br'\1\r\n', Content)
- # Remove trailing white spaces
- Content = re.sub(br'[ \t]+(\r\n)', br'\1', Content, flags=re.MULTILINE)
- # Replace '\t' with two spaces
- Content = re.sub(b'\t', b' ', Content)
- with open(FilePath, 'wb') as Fd:
- Fd.write(Content)
- if not Args.Quiet:
- print(FilePath)
-
-def FormatFilesInDir(DirPath, ExtList, Args):
-
- FileList = []
- ExcludeDir = DirPath
- for DirPath, DirNames, FileNames in os.walk(DirPath):
- if Args.Exclude:
- DirNames[:] = [d for d in DirNames if d not in Args.Exclude]
- FileNames[:] = [f for f in FileNames if f not in Args.Exclude]
- Continue = False
- for Path in Args.Exclude:
- Path = Path.strip('\\').strip('/')
- if not os.path.isdir(Path) and not os.path.isfile(Path):
- Path = os.path.join(ExcludeDir, Path)
- if os.path.isdir(Path) and Path.endswith(DirPath):
- DirNames[:] = []
- Continue = True
- elif os.path.isfile(Path):
- FilePaths = FileNames
- for ItemPath in FilePaths:
- FilePath = os.path.join(DirPath, ItemPath)
- if Path.endswith(FilePath):
- FileNames.remove(ItemPath)
- if Continue:
- continue
- for FileName in [f for f in FileNames if any(f.endswith(ext) for ext in ExtList)]:
- FileList.append(os.path.join(DirPath, FileName))
- for File in FileList:
- FormatFile(File, Args)
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser(prog=__prog__, description=__description__ + __copyright__, conflict_handler = 'resolve')
-
- parser.add_argument('Path', nargs='+',
- help='the path for files to be converted.It could be directory or file path.')
- parser.add_argument('--version', action='version', version=__version__)
- parser.add_argument('--append-extensions', dest='AppendExt', nargs='+',
- help='append file extensions filter to default extensions. (Example: .txt .c .h)')
- parser.add_argument('--override-extensions', dest='OverrideExt', nargs='+',
- help='override file extensions filter on default extensions. (Example: .txt .c .h)')
- parser.add_argument('-v', '--verbose', dest='Verbose', action='store_true',
- help='increase output messages')
- parser.add_argument('-q', '--quiet', dest='Quiet', action='store_true',
- help='reduce output messages')
- parser.add_argument('--debug', dest='Debug', type=int, metavar='[0-9]', choices=range(0, 10), default=0,
- help='set debug level')
- parser.add_argument('--exclude', dest='Exclude', nargs='+', help="directory name or file name which will be excluded")
- args = parser.parse_args()
- DefaultExt = copy.copy(DEFAULT_EXT_LIST)
-
- if args.OverrideExt is not None:
- DefaultExt = args.OverrideExt
- if args.AppendExt is not None:
- DefaultExt = list(set(DefaultExt + args.AppendExt))
-
- for Path in args.Path:
- if not os.path.exists(Path):
- print("not exists path: {0}".format(Path))
- sys.exit(1)
- if os.path.isdir(Path):
- FormatFilesInDir(Path, DefaultExt, args)
- elif os.path.isfile(Path):
- FormatFile(Path, args)
+# @file FormatDosFiles.py
+# This script format the source files to follow dos style.
+# It supports Python2.x and Python3.x both.
+#
+# Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+
+#
+# Import Modules
+#
+from __future__ import print_function
+import argparse
+import os
+import os.path
+import re
+import sys
+import copy
+
+__prog__ = 'FormatDosFiles'
+__version__ = '%s Version %s' % (__prog__, '0.10 ')
+__copyright__ = 'Copyright (c) 2018-2019, Intel Corporation. All rights reserved.'
+__description__ = 'Convert source files to meet the EDKII C Coding Standards Specification.\n'
+DEFAULT_EXT_LIST = ['.h', '.c', '.nasm', '.nasmb', '.asm', '.S', '.inf', '.dec', '.dsc', '.fdf', '.uni', '.asl', '.aslc', '.vfr', '.idf', '.txt', '.bat', '.py']
+
+#For working in python2 and python3 environment, re pattern should use binary string, which is bytes type in python3.
+#Because in python3,read from file in binary mode will return bytes type,and in python3 bytes type can not be mixed with str type.
+def FormatFile(FilePath, Args):
+ with open(FilePath, 'rb') as Fd:
+ Content = Fd.read()
+ # Convert the line endings to CRLF
+ Content = re.sub(br'([^\r])\n', br'\1\r\n', Content)
+ Content = re.sub(br'^\n', br'\r\n', Content, flags=re.MULTILINE)
+ # Add a new empty line if the file is not end with one
+ Content = re.sub(br'([^\r\n])$', br'\1\r\n', Content)
+ # Remove trailing white spaces
+ Content = re.sub(br'[ \t]+(\r\n)', br'\1', Content, flags=re.MULTILINE)
+ # Replace '\t' with two spaces
+ Content = re.sub(b'\t', b' ', Content)
+ with open(FilePath, 'wb') as Fd:
+ Fd.write(Content)
+ if not Args.Quiet:
+ print(FilePath)
+
+def FormatFilesInDir(DirPath, ExtList, Args):
+
+ FileList = []
+ ExcludeDir = DirPath
+ for DirPath, DirNames, FileNames in os.walk(DirPath):
+ if Args.Exclude:
+ DirNames[:] = [d for d in DirNames if d not in Args.Exclude]
+ FileNames[:] = [f for f in FileNames if f not in Args.Exclude]
+ Continue = False
+ for Path in Args.Exclude:
+ Path = Path.strip('\\').strip('/')
+ if not os.path.isdir(Path) and not os.path.isfile(Path):
+ Path = os.path.join(ExcludeDir, Path)
+ if os.path.isdir(Path) and Path.endswith(DirPath):
+ DirNames[:] = []
+ Continue = True
+ elif os.path.isfile(Path):
+ FilePaths = FileNames
+ for ItemPath in FilePaths:
+ FilePath = os.path.join(DirPath, ItemPath)
+ if Path.endswith(FilePath):
+ FileNames.remove(ItemPath)
+ if Continue:
+ continue
+ for FileName in [f for f in FileNames if any(f.endswith(ext) for ext in ExtList)]:
+ FileList.append(os.path.join(DirPath, FileName))
+ for File in FileList:
+ FormatFile(File, Args)
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(prog=__prog__, description=__description__ + __copyright__, conflict_handler = 'resolve')
+
+ parser.add_argument('Path', nargs='+',
+ help='the path for files to be converted.It could be directory or file path.')
+ parser.add_argument('--version', action='version', version=__version__)
+ parser.add_argument('--append-extensions', dest='AppendExt', nargs='+',
+ help='append file extensions filter to default extensions. (Example: .txt .c .h)')
+ parser.add_argument('--override-extensions', dest='OverrideExt', nargs='+',
+ help='override file extensions filter on default extensions. (Example: .txt .c .h)')
+ parser.add_argument('-v', '--verbose', dest='Verbose', action='store_true',
+ help='increase output messages')
+ parser.add_argument('-q', '--quiet', dest='Quiet', action='store_true',
+ help='reduce output messages')
+ parser.add_argument('--debug', dest='Debug', type=int, metavar='[0-9]', choices=range(0, 10), default=0,
+ help='set debug level')
+ parser.add_argument('--exclude', dest='Exclude', nargs='+', help="directory name or file name which will be excluded")
+ args = parser.parse_args()
+ DefaultExt = copy.copy(DEFAULT_EXT_LIST)
+
+ if args.OverrideExt is not None:
+ DefaultExt = args.OverrideExt
+ if args.AppendExt is not None:
+ DefaultExt = list(set(DefaultExt + args.AppendExt))
+
+ for Path in args.Path:
+ if not os.path.exists(Path):
+ print("not exists path: {0}".format(Path))
+ sys.exit(1)
+ if os.path.isdir(Path):
+ FormatFilesInDir(Path, DefaultExt, args)
+ elif os.path.isfile(Path):
+ FormatFile(Path, args)