Sha256: 5d06f69387167be515eacc495bcd1520eef82159e2fa633fa856a14d4c5d048e

Contents?: true

Size: 1.74 KB

Versions: 3

Compression:

Stored size: 1.74 KB

Contents

require 'forwardable'
require_relative 'helpers'

module Slackistrano
  module Messaging
    class Base

      include Helpers

      extend Forwardable
      def_delegators :env, :fetch

      attr_reader :team, :token, :webhook, :options

      def initialize(options = {})
        @options = options.dup

        @env = options.delete(:env)
        @team = options.delete(:team)
        @channel = options.delete(:channel)
        @token = options.delete(:token)
        @webhook = options.delete(:webhook)
      end

      def payload_for_updating
        {
          text: "#{deployer} has started deploying branch #{branch} of #{application} to #{stage}"
        }
      end

      def payload_for_reverting
        {
          text: "#{deployer} has started rolling back branch #{branch} of #{application} to #{stage}"
        }
      end

      def payload_for_updated
        {
          text: "#{deployer} has finished deploying branch #{branch} of #{application} to #{stage}"
        }
      end

      def payload_for_reverted
        {
          text: "#{deployer} has finished rolling back branch of #{application} to #{stage}"
        }
      end

      def payload_for_failed
        {
          text: "#{deployer} has failed to #{deploying? ? 'deploy' : 'rollback'} branch #{branch} of #{application} to #{stage}"
        }
      end

      def channels_for(action)
        @channel
      end

      ################################################################################

      def payload_for(action)
        method = "payload_for_#{action}"
        respond_to?(method) && send(method)
      end

      def via_slackbot?
        @webhook.nil?
      end

    end
  end
end

require_relative 'default'
require_relative 'deprecated'
require_relative 'null'

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
slackistrano-3.8.4 lib/slackistrano/messaging/base.rb
slackistrano-3.8.3 lib/slackistrano/messaging/base.rb
slackistrano-3.8.2 lib/slackistrano/messaging/base.rb