class CiSlack::Messager

Public Instance Methods

deliver(message = nil, status = :success) click to toggle source

status: failed or success

# File lib/ci_slack/messager.rb, line 7
def deliver(message = nil, status = :success)
  return unless ENV[ci_computer.to_s]

  author, commit_message = last_git_log

  client.post(text: text(status, author, commit_message, message),
              icon_emoji: ":#{ send(status.to_s + '_icon') }:")
end
method_missing(method, *args) click to toggle source
Calls superclass method
# File lib/ci_slack/messager.rb, line 16
def method_missing(method, *args)
  if %i[success_icon failed_icon skip_success_message
        failed_title success_title webhook channel
        ci_computer bot_name project slack_names].include?(method)
    CiSlack.configuration.send(method)
  else
    super
  end
end

Private Instance Methods

client() click to toggle source
# File lib/ci_slack/messager.rb, line 50
def client
  @client ||= ::Slack::Notifier.new(webhook, channel: channel, username: bot_name)
end
last_git_log() click to toggle source
# File lib/ci_slack/messager.rb, line 46
def last_git_log
  `git log -1 --pretty='%an||%s'`.split('||').map(&:strip)
end
slack_name(author, status) click to toggle source
# File lib/ci_slack/messager.rb, line 32
def slack_name(author, status)
  slack_name = slack_names.select { |key, _| author.downcase =~ key }.values.first

  unless slack_name.nil?
    if skip_success_message.include?(slack_name) && status == :success 
      slack_name
    else
      "<@#{ slack_name }>"
    end
  else
    author
  end
end
text(status, author, commit_message, message) click to toggle source
# File lib/ci_slack/messager.rb, line 28
def text(status, author, commit_message, message)
  "#{ project }. #{ send(status.to_s + '_title') }\n#{ slack_name(author, status) } : #{ commit_message }\n#{ message }"
end