forked from martinjandrews/greenscreen
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgreenscreen.rb
49 lines (41 loc) · 1.43 KB
/
greenscreen.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
require 'rubygems'
require 'sinatra'
require 'erb'
require 'rexml/document'
require 'hpricot'
require 'open-uri'
get '/' do
servers = YAML.load_file 'config.yml'
return "Add the details of build server to the config.yml file to get started" unless servers
@projects = []
servers.each do |server|
xml = REXML::Document.new(open(server["url"], :http_basic_authentication=>[server["username"], server["password"]]))
xml.elements.each("Projects/Project") do |project|
monitored_project = MonitoredProject.new(project)
if server["jobs"]
if server["jobs"].detect {|job| job == monitored_project.name}
@projects << monitored_project
end
else
@projects << monitored_project
end
end
end
@columns = 1.0
@columns = 2.0 if @projects.size > 4
@columns = 3.0 if @projects.size > 10
@columns = 4.0 if @projects.size > 21
@rows = (@projects.size / @columns).ceil
erb :index
end
class MonitoredProject
attr_reader :name, :last_build_status, :activity, :last_build_time, :web_url, :last_build_label
def initialize(project)
@activity = project.attributes["activity"]
@last_build_time = Time.parse(project.attributes["lastBuildTime"]).localtime
@web_url = project.attributes["webUrl"]
@last_build_label = project.attributes["lastBuildLabel"]
@last_build_status = project.attributes["lastBuildStatus"].downcase
@name = project.attributes["name"]
end
end