blob: a1a47f2959693854fdd9cd8a93f5f0a04ca61d44 [file] [log] [blame]
#!/usr/bin/env ruby
# script to try and find duplicate ICLAs from the same people
$LOAD_PATH.unshift '/srv/whimsy/lib'
require 'wunderbar/script'
require 'ruby2js/filter/functions'
require 'whimsy/asf'
_html do
_style %{
table {border-collapse: collapse}
table, th, td {border: 1px solid black}
td {padding: 3px 6px}
tr:hover td {background-color: #FF8}
th {background-color: #a0ddf0}
}
_h1 'ICLA duplicates check'
_p do
_ 'This script checks for possible duplicate ICLAs.'
_ 'It does this by splitting the Full Names into separate words, sorting them and then looking for duplicates.'
end
_p 'Further checks TBA, e.g. looking for partial matches'
dups = Hash.new{|h,k| h[k]=Array.new}
ASF::ICLA.each do |icla|
legal = icla.legal_name
legals = legal.downcase.split(' ')
if %w(jr jr. ii iii).include? legals[-1]
legals.pop
end
key = legals.sort.join(' ')
dups[key] << {legal: legal, public: icla.name, email: icla.email, claRef: icla.claRef, id: icla.id}
if legals.size > 2 # try only first and last names
key2 = [legals[0], legals[-1]].sort.join(' ')
# Store main key so can drop ones already shown later
# e.g. if A B C and C B A already have appeared, no point showing A C and C A
dups[key2] << {key: key, legal: legal, public: icla.name, email: icla.email, claRef: icla.claRef, id: icla.id}
end
end
_table do
_tr do
_th 'Key'
_th 'Id'
_th 'Legal Name'
_th 'Public Name'
_th 'Email'
_th 'CLAref'
end
dups.sort_by{|k,v| k}.each do |key, val|
# look for repeats of A B C / C B A
next if val.size == 2 and (val[0][:key] || '1' ) == (val[1][:key] || '2')
if val.size > 1
_tr do
_td key
_td do
val.each do |v|
id = v[:id]
if id == 'notinavail'
_ id
else
_a id, href: '/roster/committer/' + id
end
_br
end
end
_td do
val.each do |v|
_ v[:legal]
_br
end
end
_td do
val.each do |v|
_ v[:public]
_br
end
end
_td do
val.each do |v|
_ v[:email]
_br
end
end
_td do
val.each do |v|
claRef = v[:claRef]
file = ASF::ICLAFiles.match_claRef(claRef)
if file
_a claRef, href: ASF::SVN.svnpath!('iclas', file)
else
_ claRef
end
_br
end
end
end
end
end
end
end