| # |
| # File an ICLA: |
| # - add files to documents/cclas |
| # - add entry to officers/cclas.txt |
| # - respond to original email |
| # |
| |
| # extract message |
| message = Mailbox.find(@message) |
| |
| # extract file extension |
| fileext = File.extname(@selected).downcase if @signature.empty? |
| |
| ccla = "#@filename#{fileext}" |
| |
| # verify that a CCLA under that name doesn't already exist |
| if ccla =~ /\A\w[-\w]*\.?\w*\z/ |
| if ASF::CCLAFiles.exist?(ccla.untaint) |
| _warn "documents/cclas/#{ccla} already exists" |
| end |
| else |
| # Should not be possible, as form checks for: '[a-zA-Z][-\w]+(\.[a-z]+)?' |
| _warn "#{ccla} is not a valid file name" |
| end |
| |
| # extract/verify project |
| _extract_project |
| |
| # obtain per-user information |
| _personalize_email(env.user) |
| |
| # initialize commit message |
| @document = "CCLA from #{@company}" |
| |
| ######################################################################## |
| # document/cclas and cclas.txt # |
| ######################################################################## |
| |
| task "svn commit documents/cclas/#@filename#{fileext} and update cclas.txt" do |
| |
| # construct line to be inserted in cclas.txt |
| @cclalines = "notinavail:" + @company.strip |
| unless @contact.empty? |
| @cclalines += " - #{@contact.strip}" |
| end |
| @cclalines += ":#{@email.strip}:Signed Corp CLA" |
| unless @employees.empty? |
| @cclalines += " for #{@employees.strip.gsub(/\s*\n\s*/, ', ')}" |
| end |
| unless @product.empty? |
| @cclalines += " for #{@product.strip}" |
| end |
| |
| form do |
| _input value: @selected, name: 'selected' |
| |
| if @signature and not @signature.empty? |
| _input value: @signature, name: 'signature' |
| end |
| |
| _input value: @cclalines, name: 'cclalines' |
| end |
| |
| complete do |dir| |
| |
| svn_multi('officers', 'cclas.txt', 'cclas', @selected, @signature, @filename, fileext, message, @document) do |input| |
| # append entry to cclas.txt |
| input + @cclalines + "\n" |
| end |
| |
| end |
| |
| end |
| |
| ######################################################################## |
| # email submitter # |
| ######################################################################## |
| |
| # send confirmation email |
| task "email #@email" do |
| # build mail from template |
| mail = message.reply( |
| subject: @document, |
| from: @from, |
| to: "#{@contact.inspect} <#{@email}>", |
| cc: [ |
| 'secretary@apache.org', |
| ("private@#{@pmc.mail_list}.apache.org" if @pmc), # copy pmc |
| (@podling.private_mail_list if @podling) # copy podling |
| ], |
| body: template('ccla.erb') |
| ) |
| |
| # echo email |
| form do |
| _message mail.to_s |
| end |
| |
| # deliver mail |
| complete do |
| mail.deliver! |
| end |
| end |