Class: See::Plugins::Circle

Inherits:
Plugin
  • Object
show all
Defined in:
lib/see/plugins/circle.rb

Instance Method Summary collapse

Methods inherited from Plugin

#access_token

Instance Method Details

#config_nameObject



11
12
13
# File 'lib/see/plugins/circle.rb', line 11

def config_name
  'circle'
end

#display_nameObject



7
8
9
# File 'lib/see/plugins/circle.rb', line 7

def display_name
  'CircleCi'
end

#latest_builds(account, repository, lines) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/see/plugins/circle.rb', line 15

def latest_builds(, repository, lines)
  token = access_token('CIRCLE_CI_ACCESS_TOKEN')
  CircleCi.configure do |cfg|
    cfg.token = token
  end

  response = CircleCi::Project.recent_builds(, repository)
  if response.errors.length > 0
    lines << "  Errors encountered:".red
    response.errors.each do |error|
      lines << "    - " + "Error #{error.code}:".red + " #{JSON.parse(error.message)['message'].strip}"
      raise
    end
  end

  response.body[0..4]
end

#run(config, plugin_config) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/see/plugins/circle.rb', line 33

def run(config, plugin_config)
  lines = []

  begin
    builds = latest_builds(plugin_config['account'], plugin_config['repository'], lines)
  rescue => error
    return lines
  end

  lines << "  Latest Builds:".light_blue
  lines << builds.map do |build|
    time = "- #{Date.parse(build['committer_date']).strftime("%b %e,%l:%M %p")}".black if build['committer_date'] 
    was_bad = build['status'].match(/failed|not_run/)
    status = build['status'].capitalize.send(was_bad ? :red : :green)
    name = "[#{build['committer_name']}]".cyan ||= ''
    commit_id = build["vcs_revision"][0..8].light_yellow
    build_number = ("#"+build['build_num'].to_s).light_green

    "    - #{status} #{commit_id} #{build_number} #{build['subject']} #{name} #{time}"
  end
  lines
end