Sha256: 208c31c63450e405ac31bd9a216fa9e6d9d3293c78815e23b4bb6fa2a747d388

Contents?: true

Size: 1.25 KB

Versions: 3

Compression:

Stored size: 1.25 KB

Contents

module Travis
  module Surveillance
    class Project
      attr_accessor :description, :id, :name, :owner, :slug, :status

      def initialize(name)
        @owner, @name = name.split('/')
        @slug         = name
        populate
      end

      def add_build(json)
        if build = build_for(json['id'])
          return build
        end

        build = Build.new(json.merge({'project' => self}))
        builds << build
        build
      end

      def build_for(id)
        builds.find { |b| b.id == id }
      end

      def building?
        status.nil?
      end

      def builds
        @builds ||= []
      end

      def failed?
        !status.nil? && !passed?
      end

      def passed?
        !status.nil? && status.zero?
      end

      private

      def get_details
        if Travis::Surveillance.mocking?
          JSON.parse(IO.read(File.dirname(__FILE__) + "/../../../spec/support/projects/#{slug.gsub('/', '-')}.json"))
        else
          JSON.parse(open("http://travis-ci.org/#{slug}.json").read)
        end
      end

      def populate
        details = get_details
        @description = details['description']
        @id          = details['id']
        @status      = details['last_build_status']
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
travis-surveillance-0.0.3 lib/travis/surveillance/project.rb
travis-surveillance-0.0.2 lib/travis/surveillance/project.rb
travis-surveillance-0.0.1 lib/travis/surveillance/project.rb