Module: ExtremeFeedbackDevice
- Defined in:
- lib/extreme_feedback_device.rb,
lib/extreme_feedback_device/pi.rb,
lib/extreme_feedback_device/cli.rb,
lib/extreme_feedback_device/job.rb,
lib/extreme_feedback_device/spi.rb,
lib/extreme_feedback_device/jenkins.rb,
lib/extreme_feedback_device/version.rb,
lib/extreme_feedback_device/settings.rb
Defined Under Namespace
Classes: CLI, Jenkins, Job, Pi, SPI, Settings
Constant Summary
collapse
- VERSION =
"0.0.4"
Class Method Summary
collapse
Class Method Details
.environment ⇒ Object
16
17
18
|
# File 'lib/extreme_feedback_device.rb', line 16
def environment
ENV["EFD_ENV"] || "production"
end
|
.infinite_loop ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/extreme_feedback_device.rb', line 65
def infinite_loop
settings['infinite_loop'] ||= {}
interval = settings.infinite_loop['sleep'] || 30
%w(INT TERM).each do |signal|
trap(signal) do
puts "\r\nReceived SIGINT - turning off all LEDs and exit ..."
pi.leds_black!
pi.leds_black! exit(0)
end
end
while true
run
sleep(interval)
end
end
|
.jenkins ⇒ Object
24
25
26
|
# File 'lib/extreme_feedback_device.rb', line 24
def jenkins
@jenkins ||= ExtremeFeedbackDevice::Jenkins.new(settings.jenkins.user, settings.jenkins.token, settings.jenkins.url)
end
|
.logger ⇒ Object
8
9
10
11
12
13
14
|
# File 'lib/extreme_feedback_device.rb', line 8
def logger
if settings['log']
@logger ||= ::Logger.new(settings.log.file, settings.log['keep'], settings.log['size'])
else
@logger ||= ::Logger.new(STDOUT)
end
end
|
.pi ⇒ Object
28
29
30
|
# File 'lib/extreme_feedback_device.rb', line 28
def pi
@pi ||= ExtremeFeedbackDevice::Pi.new(settings.pi.num_leds, settings.spi['device'])
end
|
.run ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/extreme_feedback_device.rb', line 32
def run
jobs = jenkins.jobs
num_leds = settings.pi.num_leds
map_leds = settings.pi.map_leds
num_leds.times do |led_idx|
job_name = map_leds["i_#{led_idx}"]
if job_name
job = jobs.find { |job| job.name == job_name }
if job
if job.fail?
pi.leds[led_idx] = ::Color::RGB::Red
elsif job.unstable?
pi.leds[led_idx] = ::Color::RGB::Yellow
elsif job.success?
pi.leds[led_idx] = ::Color::RGB::Green
elsif job.inactive?
pi.leds[led_idx] = ::Color::RGB::Grey
elsif job.disabled?
pi.leds[led_idx] = ::Color::RGB::Grey
else pi.leds[led_idx] = ::Color::RGB::Black
end
else pi.leds[led_idx] = ::Color::RGB::Black
end
else pi.leds[led_idx] = ::Color::RGB::Black
end
end
pi.write!
end
|