www/secretary/workbench/views/actions/parse-icla.json.rb (33 lines of code) (raw):
# parse an icla from a PDF
require 'uri'
require_relative '../../../iclaparser'
require_relative '../../models/mailbox'
attachment = URI::RFC2396_Parser.new.unescape(@attachment) # derived from a URI
# WHIMSY-322
ALIASES = {
'solr' => 'lucene',
}
if attachment.end_with? '.pdf'
message = Mailbox.find(@message)
path = message.find(attachment).as_file.path
parsed = ICLAParser.parse(path)
# Extract the project and adjust if necessary
project = parsed[:Project]
if project
parsed[:PDFProject] = project.dup # retain the original value
project = project.downcase.sub('apache ', '').sub('(podling)', '').sub(' project', '').strip
projects = (ASF::Podling.current + ASF::Committee.pmcs).map(&:name)
if projects.include? project
parsed[:Project] = project
else
if project.start_with? 'commons-'
parsed[:Project] = 'commons'
elsif project.start_with? 'log'
parsed[:Project] = 'logging'
else
tmp = ALIASES[project]
parsed[:Project] = tmp if tmp
end
end
end
else
parsed = {}
end
{parsed: parsed}