diff --git a/utils/wciia.py b/utils/wciia.py index 4269db2de46..666bd63a279 100755 --- a/utils/wciia.py +++ b/utils/wciia.py @@ -1,5 +1,4 @@ #!/usr/bin/env python - """ wciia - Whose Code Is It Anyway @@ -25,90 +24,95 @@ import os code_owners = {} + def process_files_and_folders(owner): - filesfolders = owner['filesfolders'] - # paths must be in ( ... ) so strip them - lpar = filesfolders.find('(') - rpar = filesfolders.rfind(')') - if rpar <= lpar: - # give up - return - paths = filesfolders[lpar+1:rpar] - # split paths - owner['paths'] = [] - for path in paths.split(): - owner['paths'].append(path) - + filesfolders = owner['filesfolders'] + # paths must be in ( ... ) so strip them + lpar = filesfolders.find('(') + rpar = filesfolders.rfind(')') + if rpar <= lpar: + # give up + return + paths = filesfolders[lpar + 1:rpar] + # split paths + owner['paths'] = [] + for path in paths.split(): + owner['paths'].append(path) + + def process_code_owner(owner): - if 'filesfolders' in owner: - filesfolders = owner['filesfolders'] - else: -# print "F: field missing, using D: field" - owner['filesfolders'] = owner['description'] - process_files_and_folders(owner) - code_owners[owner['name']] = owner - + if 'filesfolders' in owner: + filesfolders = owner['filesfolders'] + else: + # print "F: field missing, using D: field" + owner['filesfolders'] = owner['description'] + process_files_and_folders(owner) + code_owners[owner['name']] = owner + + # process CODE_OWNERS.TXT first code_owners_file = open("CODE_OWNERS.TXT", "r").readlines() code_owner = {} for line in code_owners_file: for word in line.split(): - if word == "N:": - name = line[2:].strip() - if code_owner: - process_code_owner(code_owner) - code_owner = {} - # reset the values - code_owner['name'] = name - if word == "E:": - email = line[2:].strip() - code_owner['email'] = email - if word == "D:": - description = line[2:].strip() - code_owner['description'] = description - if word == "F:": - filesfolders = line[2:].strip() - code_owner['filesfolders'].append(filesfolders) - + if word == "N:": + name = line[2:].strip() + if code_owner: + process_code_owner(code_owner) + code_owner = {} + # reset the values + code_owner['name'] = name + if word == "E:": + email = line[2:].strip() + code_owner['email'] = email + if word == "D:": + description = line[2:].strip() + code_owner['description'] = description + if word == "F:": + filesfolders = line[2:].strip() + code_owner['filesfolders'].append(filesfolders) + + def find_owners(fpath): - onames = [] - lmatch = -1 - # very simplistic way of findning the best match - for name in code_owners: - owner = code_owners[name] - if 'paths' in owner: - for path in owner['paths']: -# print "searching (" + path + ")" - # try exact match - if fpath == path: - return name - # see if path ends with a * - rstar = path.rfind('*') - if rstar>0: - # try the longest match, - rpos = -1 - if len(fpath) < len(path): - rpos = path.find(fpath) - if rpos == 0: - onames.append(name) - onames.append('Chris Lattner') - return onames - + onames = [] + lmatch = -1 + # very simplistic way of findning the best match + for name in code_owners: + owner = code_owners[name] + if 'paths' in owner: + for path in owner['paths']: + # print "searching (" + path + ")" + # try exact match + if fpath == path: + return name + # see if path ends with a * + rstar = path.rfind('*') + if rstar > 0: + # try the longest match, + rpos = -1 + if len(fpath) < len(path): + rpos = path.find(fpath) + if rpos == 0: + onames.append(name) + onames.append('Chris Lattner') + return onames + + # now lest try to find the owner of the file or folder import sys if len(sys.argv) < 2: - print("usage " + sys.argv[0] + " file_or_folder") - exit(-1) - + print("usage " + sys.argv[0] + " file_or_folder") + exit(-1) + # the path we are checking path = str(sys.argv[1]) # check if this is real path if not os.path.exists(path): - print("path (" + path + ") does not exist") - exit(-1) - + print("path (" + path + ") does not exist") + exit(-1) + owners_name = find_owners(path) # be grammatically correct @@ -117,10 +121,10 @@ print("The owner(s) of the (" + path + ") is(are) : " + str(owners_name)) exit(0) # bottom up walk of the current . -# not yet used +# not yet used root = "." -for dir,subdirList,fileList in os.walk( root , topdown=False ) : - print("dir :" , dir) - for fname in fileList : - print("-" , fname) - print() +for dir, subdirList, fileList in os.walk(root, topdown=False): + print("dir :", dir) + for fname in fileList: + print("-", fname) + print()