Sha256: 729b35314168d31e8d8cfab0136b354a2e8319b20e9e5ca8e4c7216a29856e82

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

module Integrity
  class Notifier
    class Base
      def self.notify_of_build(build, config)
        new(build, config).deliver!
      end

      def self.to_haml
        filename = name.split("::").last.downcase
        File.read File.join(Integrity.root / "lib" / "integrity" / "notifier" / "#{filename}.haml")
      end
      
      attr_reader :build
      
      def initialize(build, config)
        @build = build
        @config = config
      end
      
      def deliver!
        raise NoMethodError, "you need to implement this method in your notifier"
      end
      
      def short_message
        "Build #{build.short_commit_identifier} #{build.successful? ? "was successful" : "failed"}"
      end
      
      def full_message
        <<-EOM
"Build #{build.commit_identifier} #{build.successful? ? "was successful" : "failed"}"

Commit Message: #{build.commit_message}
Commit Date: #{build.commited_at}
Commit Author: #{build.commit_author.name}

Link: #{build_url}

Build Output:

#{stripped_build_output}
EOM
      end
      
      def build_url
        raise if Integrity.config[:base_uri].nil?
        Integrity.config[:base_uri] / build.project.permalink / "builds" / build.commit_identifier
      end

      private

        def stripped_build_output
          build.output.gsub("\e[0m", '').gsub(/\e\[3[1-7]m/, '')
        end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
foca-integrity-0.1.0 lib/integrity/notifier/base.rb