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}