mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-04 05:17:07 +00:00 
			
		
		
		
	Sweep the codebase for common typos. Includes some changes to visible function names that were misspelt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200018 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			126 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
 | 
						|
"""
 | 
						|
wciia - Whose Code Is It Anyway
 | 
						|
 | 
						|
Determines code owner of the file/folder relative to the llvm source root.
 | 
						|
Code owner is determined from the content of the CODE_OWNERS.TXT 
 | 
						|
by parsing the D: field
 | 
						|
 | 
						|
usage:
 | 
						|
 | 
						|
utils/wciia.py  path
 | 
						|
 | 
						|
limitations:
 | 
						|
- must be run from llvm source root
 | 
						|
- very simplistic algorithm
 | 
						|
- only handles * as a wildcard
 | 
						|
- not very user friendly 
 | 
						|
- does not handle the proposed F: field
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
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)
 | 
						|
	
 | 
						|
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
 | 
						|
	
 | 
						|
# 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)
 | 
						|
	
 | 
						|
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
 | 
						|
	
 | 
						|
# 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)
 | 
						|
	
 | 
						|
# 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)
 | 
						|
	
 | 
						|
owners_name = find_owners(path)
 | 
						|
 | 
						|
# be grammatically correct
 | 
						|
print "The owner(s) of the (" + path + ") is(are) : " + str(owners_name)
 | 
						|
 | 
						|
exit(0)
 | 
						|
 | 
						|
# bottom up walk of the current .
 | 
						|
# not yet used 
 | 
						|
root = "."
 | 
						|
for dir,subdirList,fileList in os.walk( root , topdown=False ) :
 | 
						|
   print "dir :" , dir
 | 
						|
   for fname in fileList :
 | 
						|
      print "-" , fname
 | 
						|
   print
 |