class Popper::Action::ExecCmd

Public Class Methods

action_name() click to toggle source
# File lib/popper/action/exec_cmd.rb, line 25
def self.action_name
  :exec_cmd
end
check_params() click to toggle source
# File lib/popper/action/exec_cmd.rb, line 21
def self.check_params
  @action_config.respond_to?(:cmd)
end
task(mail, params={}) click to toggle source
# File lib/popper/action/exec_cmd.rb, line 6
def self.task(mail, params={})
  tmps = mail.attachments.map do |a|
    ::Tempfile.open(a.filename) do |f|
      f.write a.body.decoded
      f
    end
  end unless mail.attachments.empty?
  cmd = "#{@action_config.cmd} #{Shellwords.escape(mail.subject)} #{Shellwords.escape(mail.utf_body)} #{Shellwords.escape(mail.from.join(";"))} #{Shellwords.escape(mail.to.join(";"))}"
  cmd += " #{tmps.map {|t| Shellwords.escape(t.path) }.join(' ')}" if tmps && !tmps.empty?
  ::Bundler.with_clean_env do
    system(cmd)
  end
  params
end