forked from lucasmartins/rasp-codeship
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstart.rb
76 lines (70 loc) · 1.75 KB
/
start.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
require 'json'
class CodeshipBuildStatus
TOKEN = ENV['CODESHIP_TOKEN']
PROJECT = ENV['CODESHIP_PROJECT']
def self.run!
raise 'I need both CODESHIP_TOKEN and CODESHIP_PROJECT env var to be set!' unless ENV['CODESHIP_TOKEN'] && ENV['CODESHIP_PROJECT']
boot_pins
trap("SIGINT") do
puts 'Bye bye!'
pin(17,:off) # alert the script is down!
exit!
end
puts 'Starting...'
while true do
if build_status==:success
puts 'Build is good'
pin(17,:off)
pin(18,:off)
else
if build_status==:testing
puts 'Building ...'
pin(17,:off)
pin(18,:off)
sleep 0.1
pin(18,:on)
else
puts 'Build is bad'
pin(17,:on)
pin(18,:off)
end
end
end
end
def self.boot_pins
`echo '17' > /sys/class/gpio/unexport`
`echo '17' > /sys/class/gpio/export`
`echo out > /sys/class/gpio/gpio17/direction`
`echo '18' > /sys/class/gpio/unexport`
`echo '18' > /sys/class/gpio/export`
`echo out > /sys/class/gpio/gpio17/direction`
pin(17,:on)
pin(18,:on)
sleep 0.1
pin(17,:off)
pin(18,:off)
sleep 0.1
pin(17,:on)
pin(18,:on)
sleep 0.1
pin(17,:off)
pin(18,:off)
end
def self.build_status
json_string = `curl -s https://www.codeship.io/api/v1/projects/#{PROJECT}.json\?api_key\=#{TOKEN}`
json = JSON.parse(json_string)
build = json['builds'].first
status = build['status']
return status.to_sym
end
def self.pin(number,status)
if status==:on
`echo 1 > /sys/class/gpio/gpio#{number}/value`
elsif status==:off
`echo 0 > /sys/class/gpio/gpio#{number}/value`
else
raise 'wft?'
end
end
end
CodeshipBuildStatus.run!