Dongao:
  I just meet with the case that is not expected to be modified, such as the 
third party openssl code in CryptoPkg. So, I suggest to add one option to 
describe the exception direction name or file name. 

Thanks
Liming
>-----Original Message-----
>From: edk2-devel [mailto:[email protected]] On Behalf Of
>Dongao Guo
>Sent: Tuesday, May 29, 2018 4:01 PM
>To: [email protected]
>Cc: Gao, Liming <[email protected]>
>Subject: [edk2] [PATCH v2] Formalize source files to follow DOS format
>
>From: Liming Gao <[email protected]>
>
>V2:
>add version,description,copyright.
>add flag -v,-q,--append-extensions,--override-extensions,--debug.
>-q will omit default output,-v and --debug are not implemented.
>add default file extensions.
>support input of file path.
>support muliple input path.
>simplify comment.
>change 'pattern'.encode() to b'pattern',I think this will be better.
>change naming of variable and function to keep the same with BinToPcd.py
>
>V1:
>FormatDosFiles.py is added to clean up dos source files. It bases on
>the rules defined in EDKII C Coding Standards Specification.
>5.1.2 Do not use tab characters
>5.1.6 Only use CRLF (Carriage Return Line Feed) line endings.
>5.1.7 All files must end with CRLF
>No trailing white space in one line. (To be added in spec)
>
>The source files in edk2 project with the below postfix are dos format.
>.h .c .nasm .nasmb .asm .S .inf .dec .dsc .fdf .uni .asl .aslc .vfr .idf
>.txt .bat .py
>
>The package maintainer can use this script to clean up all files in his
>package. The prefer way is to create one patch per one package.
>
>Contributed-under: TianoCore Contribution Agreement 1.1
>Signed-off-by: Liming Gao <[email protected]>
>Signed-off-by: Dongao Guo <[email protected]>
>
>---
> BaseTools/Scripts/FormatDosFiles.py | 94
>+++++++++++++++++++++++++++++++++++++
> 1 file changed, 94 insertions(+)
> create mode 100644 BaseTools/Scripts/FormatDosFiles.py
>
>diff --git a/BaseTools/Scripts/FormatDosFiles.py
>b/BaseTools/Scripts/FormatDosFiles.py
>new file mode 100644
>index 0000000..fa969ed
>--- /dev/null
>+++ b/BaseTools/Scripts/FormatDosFiles.py
>@@ -0,0 +1,94 @@
>+# @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>
>+#
>+#  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 argparse
>+import os
>+import os.path
>+import re
>+import sys
>+import copy
>+
>+__prog__        = 'FormatDosFiles'
>+__version__     = '%s Version %s' % (__prog__, '0.12 ')
>+__copyright__   = 'Copyright (c) 2018 3, 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()
>+        Fd.close()
>+        # 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)
>+            Fd.close()
>+            if not Args.Quiet:
>+                print(FilePath)
>+
>+def FormatFilesInDir(DirPath, ExtList, Args):
>+
>+    FileList = []
>+    for DirPath, DirNames, FileNames in os.walk(DirPath):
>+        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')
>+
>+    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)
>--
>2.6.1.windows.1
>
>_______________________________________________
>edk2-devel mailing list
>[email protected]
>https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to