68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
if ! [ -f ai/regression/completeness.sh ]; then
 | 
						|
	echo "Make sure you are in the root of OpenTTD before starting this script."
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
 | 
						|
cat ai/regression/tst_*/main.nut | tr ';' '\n' | awk '
 | 
						|
/^function/ {
 | 
						|
	for (local in locals) {
 | 
						|
		delete locals[local]
 | 
						|
	}
 | 
						|
	if (match($0, "function Regression::Start") || match($0, "function Regression::Stop")) next
 | 
						|
	locals["this"] = "AIControllerSquirrel"
 | 
						|
}
 | 
						|
 | 
						|
/local/ {
 | 
						|
	gsub(".*local", "local")
 | 
						|
	if (match($4, "^AI")) {
 | 
						|
		sub("\\(.*", "", $4)
 | 
						|
		locals[$2] = $4
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
/Valuate/ {
 | 
						|
	gsub(".*Valuate\\(", "")
 | 
						|
	gsub("\\).*", "")
 | 
						|
	gsub(",.*", "")
 | 
						|
	gsub("\\.", "::")
 | 
						|
	print $0
 | 
						|
}
 | 
						|
 | 
						|
/\./ {
 | 
						|
	for (local in locals) {
 | 
						|
		if (match($0, local ".")) {
 | 
						|
			fname = substr($0, index($0, local "."))
 | 
						|
			sub("\\(.*", "", fname)
 | 
						|
			sub("\\.", "::", fname)
 | 
						|
			sub(local, locals[local], fname)
 | 
						|
			print fname
 | 
						|
			if (match(locals[local], "List")) {
 | 
						|
				sub(locals[local], "AIAbstractList", fname)
 | 
						|
				print fname
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	# We want to remove everything before the FIRST occurrence of AI.
 | 
						|
	# If we do not remove any other occurrences of AI from the string
 | 
						|
	# we will remove everything before the LAST occurrence of AI, so
 | 
						|
	# do some little magic to make it work the way we want.
 | 
						|
	sub("AI", "AXXXXY")
 | 
						|
	gsub("AI", "AXXXXX")
 | 
						|
	sub(".*AXXXXY", "AI")
 | 
						|
	if (match($0, "^AI") && match($0, ".")) {
 | 
						|
		sub("\\(.*", "", $0)
 | 
						|
		sub("\\.", "::", $0)
 | 
						|
		print $0
 | 
						|
	}
 | 
						|
}
 | 
						|
' | sed 's/	//g' | sort | uniq > tmp.in_regression
 | 
						|
 | 
						|
grep 'DefSQ.*Method' ../src/script/api/ai/*.hpp.sq | grep -v 'AIError::' | grep -v 'AIAbstractList::Valuate' | grep -v '::GetClassName' | sed 's/^[^,]*, &//g;s/,[^,]*//g' | sort > tmp.in_api
 | 
						|
 | 
						|
diff -u tmp.in_regression tmp.in_api | grep -v '^+++' | grep '^+' | sed 's/^+//'
 | 
						|
 | 
						|
rm -f tmp.in_regression tmp.in_api
 | 
						|
 |