class ProspectusCircleci::Build

Helper for automatically adding build status check

Public Class Methods

new(repo_slug, params = {}) click to toggle source
# File lib/prospectus_circleci.rb, line 10
def initialize(repo_slug, params = {})
  @repo_slug = repo_slug || raise('No repo specified')
  @options = params
end

Public Instance Methods

extended(other) click to toggle source
# File lib/prospectus_circleci.rb, line 15
def extended(other) # rubocop:disable Metrics/MethodLength
  actual_val, expected_val = parse_status

  other.deps do
    item do
      name 'circleci'

      expected do
        static
        set expected_val
      end

      actual do
        static
        set actual_val
      end
    end
  end
end

Private Instance Methods

api_req(path) click to toggle source
# File lib/prospectus_circleci.rb, line 48
def api_req(path)
  JSON.parse(open(url(path)).read) # rubocop:disable Security/Open
end
base_url() click to toggle source
# File lib/prospectus_circleci.rb, line 56
def base_url
  @base_url ||= @options[:base_url] || 'https://circleci.com'
end
parse_status() click to toggle source
# File lib/prospectus_circleci.rb, line 37
def parse_status
  return [status, status] if GOOD_STATUSES.include?(status)
  [status, 'success']
end
status() click to toggle source
# File lib/prospectus_circleci.rb, line 42
def status
  return @status if @status
  build = api_req("project/github/#{@repo_slug}").first
  @status = build ? build['status'] : 'new'
end
token() click to toggle source
# File lib/prospectus_circleci.rb, line 60
def token
  return @token if @token
  credential = Keylime.new(server: base_url)
  msg = "CircleCI Token (#{base_url}/account/api)"
  @token = credential.get!(msg).password
end
url(path) click to toggle source
# File lib/prospectus_circleci.rb, line 52
def url(path)
  "#{base_url}/api/v1.1/#{path}?circle-token=#{token}"
end