omtcyfz created this revision.
omtcyfz added reviewers: ClockMan, ioeric, aaron.ballman.
omtcyfz added a subscriber: cfe-commits.

Start using `argparse` instead of mimicking CLI parsing.

PEPify the code.


https://reviews.llvm.org/D25074

Files:
  clang-tidy/rename_check.py

Index: clang-tidy/rename_check.py
===================================================================
--- clang-tidy/rename_check.py
+++ clang-tidy/rename_check.py
@@ -13,81 +13,99 @@
 import re
 import sys
 import glob
+import argparse
+
 
 def replaceInFile(fileName, sFrom, sTo):
-  if sFrom == sTo:
-    return
-  txt = None
-  with open(fileName, "r") as f:
-    txt = f.read()
+    if sFrom == sTo:
+        return
+    txt = None
+    with open(fileName, "r") as f:
+        txt = f.read()
+
+    if sFrom not in txt:
+        return
 
-  if sFrom not in txt:
-    return
+    txt = txt.replace(sFrom, sTo)
+    print("Replace '%s' -> '%s' in '%s'" % (sFrom, sTo, fileName))
+    with open(fileName, "w") as f:
+        f.write(txt)
 
-  txt = txt.replace(sFrom, sTo)
-  print("Replace '%s' -> '%s' in '%s'" % (sFrom, sTo, fileName))
-  with open(fileName, "w") as f:
-    f.write(txt)
 
 def generateCommentLineHeader(filename):
-  return ''.join(['//===--- ',
-                  os.path.basename(filename),
-                  ' - clang-tidy ',
-                  '-' * max(0, 42 - len(os.path.basename(filename))),
-                  '*- C++ -*-===//'])
+    return ''.join(['//===--- ',
+                    os.path.basename(filename),
+                    ' - clang-tidy ',
+                    '-' * max(0, 42 - len(os.path.basename(filename))),
+                    '*- C++ -*-===//'])
+
 
 def generateCommentLineSource(filename):
-  return ''.join(['//===--- ',
-                  os.path.basename(filename),
-                  ' - clang-tidy',
-                  '-' * max(0, 52 - len(os.path.basename(filename))),
-                  '-===//'])
+    return ''.join(['//===--- ',
+                    os.path.basename(filename),
+                    ' - clang-tidy',
+                    '-' * max(0, 52 - len(os.path.basename(filename))),
+                    '-===//'])
+
 
 def fileRename(fileName, sFrom, sTo):
-  if sFrom not in fileName:
-    return fileName
-  newFileName = fileName.replace(sFrom, sTo)
-  print("Rename '%s' -> '%s'" % (fileName, newFileName))
-  os.rename(fileName, newFileName)
-  return newFileName
+    if sFrom not in fileName:
+        return fileName
+    newFileName = fileName.replace(sFrom, sTo)
+    print("Rename '%s' -> '%s'" % (fileName, newFileName))
+    os.rename(fileName, newFileName)
+    return newFileName
+
 
 def getListOfFiles(clang_tidy_path):
-  files =  glob.glob(os.path.join(clang_tidy_path,'*'))
-  for dirname in files:
-    if os.path.isdir(dirname):
-      files += glob.glob(os.path.join(dirname,'*'))
-  files += glob.glob(os.path.join(clang_tidy_path,'..', 'test', 'clang-tidy', '*'))
-  files += glob.glob(os.path.join(clang_tidy_path,'..', 'docs', 'clang-tidy', 'checks', '*'))
-  return [filename for filename in files if os.path.isfile(filename)]
+    files = glob.glob(os.path.join(clang_tidy_path, '*'))
+    for dirname in files:
+        if os.path.isdir(dirname):
+            files += glob.glob(os.path.join(dirname, '*'))
+    files += glob.glob(os.path.join(clang_tidy_path, '..', 'test',
+                                    'clang-tidy', '*'))
+    files += glob.glob(os.path.join(clang_tidy_path, '..', 'docs',
+                                    'clang-tidy', 'checks', '*'))
+    return [filename for filename in files if os.path.isfile(filename)]
+
 
 def main():
-  if len(sys.argv) != 4:
-    print('Usage: rename_check.py <module> <old-check-name> <new-check-name>\n')
-    print('       example: rename_check.py misc awesome-functions new-awesome-function')
-    return
-
-  module = sys.argv[1].lower()
-  check_name = sys.argv[2]
-  check_name_camel = ''.join(map(lambda elem: elem.capitalize(),
-                                 check_name.split('-'))) + 'Check'
-  check_name_new = sys.argv[3]
-  check_name_new_camel = ''.join(map(lambda elem: elem.capitalize(),
-                                 check_name_new.split('-'))) + 'Check'
-
-  clang_tidy_path = os.path.dirname(sys.argv[0])
-
-  header_guard_old = module.upper() + '_' + check_name.upper().replace('-', '_')
-  header_guard_new = module.upper() + '_' + check_name_new.upper().replace('-', '_')
-
-  for filename in getListOfFiles(clang_tidy_path):
-    originalName = filename
-    filename = fileRename(filename, check_name, check_name_new)
-    filename = fileRename(filename, check_name_camel, check_name_new_camel)
-    replaceInFile(filename, generateCommentLineHeader(originalName), generateCommentLineHeader(filename))
-    replaceInFile(filename, generateCommentLineSource(originalName), generateCommentLineSource(filename))
-    replaceInFile(filename, header_guard_old, header_guard_new)
-    replaceInFile(filename, check_name, check_name_new)
-    replaceInFile(filename, check_name_camel, check_name_new_camel)
+    parser = argparse.ArgumentParser(description='Rename clang-tidy check.')
+    parser.add_argument('module', type=str,
+                        help='Module where the renamed check is defined')
+    parser.add_argument('old_check_name', type=str,
+                        help='Old check name.')
+    parser.add_argument('new_check_name', type=str,
+                        help='New check name.')
+    args = parser.parse_args()
+    print(args)
+
+    args.module = args.module.lower()
+    check_name_camel = ''.join(map(lambda elem: elem.capitalize(),
+                                   args.old_check_name.split('-'))) + 'Check'
+    check_name_new_camel = ''.join(map(lambda elem: elem.capitalize(),
+                                       args.new_check_name.split('-'))) + \
+        'Check'
+
+    clang_tidy_path = os.path.dirname(sys.argv[0])
+
+    header_guard_old = args.module.upper() + '_' + \
+        args.old_check_name.upper().replace('-', '_')
+    header_guard_new = args.module.upper() + '_' + \
+        args.new_check_name.upper().replace('-', '_')
+
+    for filename in getListOfFiles(clang_tidy_path):
+        originalName = filename
+        filename = fileRename(filename, args.old_check_name,
+                              args.new_check_name)
+        filename = fileRename(filename, check_name_camel, check_name_new_camel)
+        replaceInFile(filename, generateCommentLineHeader(originalName),
+                      generateCommentLineHeader(filename))
+        replaceInFile(filename, generateCommentLineSource(originalName),
+                      generateCommentLineSource(filename))
+        replaceInFile(filename, header_guard_old, header_guard_new)
+        replaceInFile(filename, args.old_check_name, args.new_check_name)
+        replaceInFile(filename, check_name_camel, check_name_new_camel)
 
 if __name__ == '__main__':
-  main()
+    main()
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to