class Fastlane::Actions::MailgunAction

Public Class Methods

author() click to toggle source
# File fastlane/lib/fastlane/actions/mailgun.rb, line 99
def self.author
  "thiagolioy"
end
available_options() click to toggle source
# File fastlane/lib/fastlane/actions/mailgun.rb, line 21
def self.available_options
  [
    # This is here just for while due to the transition, not needed anymore
    FastlaneCore::ConfigItem.new(key: :mailgun_sandbox_domain,
                                 env_name: "MAILGUN_SANDBOX_POSTMASTER",
                                 optional: true,
                                 description: "Mailgun sandbox domain postmaster for your mail. Please use postmaster instead"),
    # This is here just for while due to the transition, should use postmaster instead
    FastlaneCore::ConfigItem.new(key: :mailgun_sandbox_postmaster,
                                 env_name: "MAILGUN_SANDBOX_POSTMASTER",
                                 optional: true,
                                 description: "Mailgun sandbox domain postmaster for your mail. Please use postmaster instead"),
    # This is here just for while due to the transition, should use apikey instead
    FastlaneCore::ConfigItem.new(key: :mailgun_apikey,
                                 env_name: "MAILGUN_APIKEY",
                                 sensitive: true,
                                 optional: true,
                                 description: "Mailgun apikey for your mail. Please use postmaster instead"),

    FastlaneCore::ConfigItem.new(key: :postmaster,
                                 env_name: "MAILGUN_SANDBOX_POSTMASTER",
                                 description: "Mailgun sandbox domain postmaster for your mail"),
    FastlaneCore::ConfigItem.new(key: :apikey,
                                 env_name: "MAILGUN_APIKEY",
                                 sensitive: true,
                                 description: "Mailgun apikey for your mail"),
    FastlaneCore::ConfigItem.new(key: :to,
                                 env_name: "MAILGUN_TO",
                                 description: "Destination of your mail"),
    FastlaneCore::ConfigItem.new(key: :from,
                                 env_name: "MAILGUN_FROM",
                                 optional: true,
                                 description: "Mailgun sender name",
                                 default_value: "Mailgun Sandbox"),
    FastlaneCore::ConfigItem.new(key: :message,
                                 env_name: "MAILGUN_MESSAGE",
                                 description: "Message of your mail"),
    FastlaneCore::ConfigItem.new(key: :subject,
                                 env_name: "MAILGUN_SUBJECT",
                                 description: "Subject of your mail",
                                 optional: true,
                                 default_value: "fastlane build"),
    FastlaneCore::ConfigItem.new(key: :success,
                                 env_name: "MAILGUN_SUCCESS",
                                 description: "Was this build successful? (true/false)",
                                 optional: true,
                                 default_value: true,
                                 type: Boolean),
    FastlaneCore::ConfigItem.new(key: :app_link,
                                 env_name: "MAILGUN_APP_LINK",
                                 description: "App Release link",
                                 optional: false),
    FastlaneCore::ConfigItem.new(key: :ci_build_link,
                                 env_name: "MAILGUN_CI_BUILD_LINK",
                                 description: "CI Build Link",
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :template_path,
                                 env_name: "MAILGUN_TEMPLATE_PATH",
                                 description: "Mail HTML template",
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :reply_to,
                                 env_name: "MAILGUN_REPLY_TO",
                                 description: "Mail Reply to",
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :attachment,
                                 env_name: "MAILGUN_ATTACHMENT",
                                 description: "Mail Attachment filenames, either an array or just one string",
                                 optional: true,
                                 type: Array),
    FastlaneCore::ConfigItem.new(key: :custom_placeholders,
                                 short_option: "-p",
                                 env_name: "MAILGUN_CUSTOM_PLACEHOLDERS",
                                 description: "Placeholders for template given as a hash",
                                 default_value: {},
                                 type: Hash)
  ]
end
category() click to toggle source
# File fastlane/lib/fastlane/actions/mailgun.rb, line 186
def self.category
  :notifications
end
description() click to toggle source
# File fastlane/lib/fastlane/actions/mailgun.rb, line 17
def self.description
  "Send a success/error message to an email group"
end
example_code() click to toggle source
# File fastlane/lib/fastlane/actions/mailgun.rb, line 159
def self.example_code
  [
    'mailgun(
      to: "fastlane@krausefx.com",
      success: true,
      message: "This is the mail\'s content"
    )',
    'mailgun(
      postmaster: "MY_POSTMASTER",
      apikey: "MY_API_KEY",
      to: "DESTINATION_EMAIL",
      from: "EMAIL_FROM_NAME",
      reply_to: "EMAIL_REPLY_TO",
      success: true,
      message: "Mail Body",
      app_link: "http://www.myapplink.com",
      ci_build_link: "http://www.mycibuildlink.com",
      template_path: "HTML_TEMPLATE_PATH",
      custom_placeholders: {
        :var1 => 123,
        :var2 => "string"
      },
      attachment: "dirname/filename.ext"
    )'
  ]
end
handle_params_transition(options) click to toggle source
# File fastlane/lib/fastlane/actions/mailgun.rb, line 103
def self.handle_params_transition(options)
  options[:postmaster] = options[:mailgun_sandbox_postmaster] if options[:mailgun_sandbox_postmaster]
  puts("\nUsing :mailgun_sandbox_postmaster is deprecated, please change to :postmaster".yellow) if options[:mailgun_sandbox_postmaster]

  options[:apikey] = options[:mailgun_apikey] if options[:mailgun_apikey]
  puts("\nUsing :mailgun_apikey is deprecated, please change to :apikey".yellow) if options[:mailgun_apikey]
end
is_supported?(platform) click to toggle source
# File fastlane/lib/fastlane/actions/mailgun.rb, line 6
def self.is_supported?(platform)
  true
end
mail_template(options) click to toggle source
# File fastlane/lib/fastlane/actions/mailgun.rb, line 133
def self.mail_template(options)
  hash = {
    author: Actions.git_author_email,
    last_commit: Actions.last_git_commit_message,
    message: options[:message],
    app_link: options[:app_link]
  }
  hash[:success] = options[:success]
  hash[:ci_build_link] = options[:ci_build_link]

  # concatenate with custom placeholders passed by user
  hash = hash.merge(options[:custom_placeholders])

  # grabs module
  eth = Fastlane::ErbTemplateHelper

  # create html from template
  html_template_path = options[:template_path]
  if html_template_path && File.exist?(html_template_path)
    html_template = eth.load_from_path(html_template_path)
  else
    html_template = eth.load("mailgun_html_template")
  end
  eth.render(html_template, hash)
end
mailgunit(options) click to toggle source
# File fastlane/lib/fastlane/actions/mailgun.rb, line 111
def self.mailgunit(options)
  sandbox_domain = options[:postmaster].split("@").last
  params = {
    from: "#{options[:from]} <#{options[:postmaster]}>",
    to: (options[:to]).to_s,
    subject: options[:subject],
    html: mail_template(options)
  }
  unless options[:reply_to].nil?
    params.store(:"h:Reply-To", options[:reply_to])
  end

  unless options[:attachment].nil?
    attachment_filenames = [*options[:attachment]]
    attachments = attachment_filenames.map { |filename| File.new(filename, 'rb') }
    params.store(:attachment, attachments)
  end

  RestClient.post("https://api:#{options[:apikey]}@api.mailgun.net/v3/#{sandbox_domain}/messages", params)
  mail_template(options)
end
run(options) click to toggle source
# File fastlane/lib/fastlane/actions/mailgun.rb, line 10
def self.run(options)
  Actions.verify_gem!('rest-client')
  require 'rest-client'
  handle_params_transition(options)
  mailgunit(options)
end