Sha256: 78dde66b49620469518763a9422b596614e0d22667ba123004bb16b0f0c30e3a

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

module DeepThought
  module CIService
    class CIServiceNotFoundError < StandardError; end
    class CIBuildNotGreenError < StandardError; end
    class CIProjectAccessError < StandardError; end

    class << self
      attr_accessor :adapters, :ci_service
    end

    def self.adapters
      @adapters ||= {}
    end

    def self.register_adapter(name, service)
      self.adapters[name] = service
    end

    def self.setup(settings)
      if settings['CI_SERVICE']
        if @adapters.keys.include?(settings['CI_SERVICE'])
          klass = adapters[settings['CI_SERVICE']]
          @ci_service = klass.new
          @ci_service.setup(settings)
        else
          raise CIServiceNotFoundError, "I don't have a CI service called \"#{settings['CI_SERVICE']}\"."
        end
      end
    end

    def self.is_branch_green?(app, branch, hash)
      begin
        @ci_service.is_branch_green?(app, branch, hash)
      rescue
        raise CIProjectAccessError, "Something went wrong asking #{ENV['CI_SERVICE']} about commit #{hash} in #{app} on the #{branch} branch."
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
deep_thought-0.1.0 lib/deep_thought/ci_service.rb