stoplight-admin 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/sinatra/stoplight_admin.rb +29 -36
- data/lib/sinatra/views/index.haml +9 -16
- data/lib/sinatra/views/layout.haml +5 -14
- data/stoplight-admin.gemspec +2 -2
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 769b6e691b419f97ee606652bddd01307783f77a
|
4
|
+
data.tar.gz: c40bc731a677289cc682974d31fb82a5876d1c56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4aa180eefdde7aa5f8f1b2bcdb4e8260f1971893dfeff4a0a799104a800deaf1257f49d0db69c91cbc6efa02c6cebca20d7f7207c375b7f300f65953ab383f4
|
7
|
+
data.tar.gz: 49de8912aa8db7aabc672e4d7adec280a2a7b85df30b11e02d785f716e17a1b6ded2a4a5cc5652f1f79267abbe32d3b8f9f82e0dbb950e90bb1a62601b695fae
|
data/README.md
CHANGED
@@ -8,14 +8,14 @@ module Sinatra
|
|
8
8
|
module StoplightAdmin
|
9
9
|
module Helpers
|
10
10
|
COLORS = [
|
11
|
-
GREEN = Stoplight::
|
12
|
-
YELLOW = Stoplight::
|
13
|
-
RED = Stoplight::
|
11
|
+
GREEN = Stoplight::Color::GREEN,
|
12
|
+
YELLOW = Stoplight::Color::YELLOW,
|
13
|
+
RED = Stoplight::Color::RED
|
14
14
|
].freeze
|
15
15
|
|
16
16
|
def data_store
|
17
17
|
return @data_store if defined?(@data_store)
|
18
|
-
@data_store = Stoplight.
|
18
|
+
@data_store = Stoplight::Light.default_data_store = settings.data_store
|
19
19
|
end
|
20
20
|
|
21
21
|
def lights
|
@@ -26,29 +26,27 @@ module Sinatra
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def light_info(light)
|
29
|
-
|
30
|
-
|
31
|
-
failures =
|
29
|
+
l = Stoplight::Light.new(light) {}
|
30
|
+
color = l.color
|
31
|
+
failures, state = l.data_store.get_all(l)
|
32
32
|
|
33
33
|
{
|
34
34
|
name: light,
|
35
35
|
color: color,
|
36
36
|
failures: failures,
|
37
|
-
|
38
|
-
locked: locked?(light)
|
37
|
+
locked: locked?(state)
|
39
38
|
}
|
40
39
|
end
|
41
40
|
|
42
41
|
def light_sort_key(light)
|
43
|
-
[COLORS.index(light[:color]),
|
44
|
-
light[:attempts] * -1,
|
42
|
+
[-COLORS.index(light[:color]),
|
45
43
|
light[:name]]
|
46
44
|
end
|
47
45
|
|
48
|
-
def locked?(
|
49
|
-
[Stoplight::
|
50
|
-
Stoplight::
|
51
|
-
.include?(
|
46
|
+
def locked?(state)
|
47
|
+
[Stoplight::State::LOCKED_GREEN,
|
48
|
+
Stoplight::State::LOCKED_RED]
|
49
|
+
.include?(state)
|
52
50
|
end
|
53
51
|
|
54
52
|
def stat_params(ls)
|
@@ -70,36 +68,36 @@ module Sinatra
|
|
70
68
|
end
|
71
69
|
|
72
70
|
def lock(light)
|
71
|
+
l = Stoplight::Light.new(light) {}
|
73
72
|
new_state =
|
74
|
-
|
75
|
-
|
73
|
+
case l.color
|
74
|
+
when Stoplight::Color::GREEN
|
75
|
+
Stoplight::State::LOCKED_GREEN
|
76
76
|
else
|
77
|
-
Stoplight::
|
77
|
+
Stoplight::State::LOCKED_RED
|
78
78
|
end
|
79
79
|
|
80
|
-
data_store.set_state(
|
80
|
+
data_store.set_state(l, new_state)
|
81
81
|
end
|
82
82
|
|
83
83
|
def unlock(light)
|
84
|
-
|
84
|
+
l = Stoplight::Light.new(light) {}
|
85
|
+
data_store.set_state(l, Stoplight::State::UNLOCKED)
|
85
86
|
end
|
86
87
|
|
87
88
|
def green(light)
|
88
|
-
|
89
|
-
|
90
|
-
|
89
|
+
l = Stoplight::Light.new(light) {}
|
90
|
+
if data_store.get_state(l) == Stoplight::State::LOCKED_RED
|
91
|
+
new_state = Stoplight::State::LOCKED_GREEN
|
92
|
+
data_store.set_state(l, new_state)
|
91
93
|
end
|
92
94
|
|
93
|
-
data_store.
|
94
|
-
data_store.clear_failures(light)
|
95
|
+
data_store.clear_failures(l)
|
95
96
|
end
|
96
97
|
|
97
98
|
def red(light)
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
def purge
|
102
|
-
data_store.clear_stale
|
99
|
+
l = Stoplight::Light.new(light) {}
|
100
|
+
data_store.set_state(l, Stoplight::State::LOCKED_RED)
|
103
101
|
end
|
104
102
|
|
105
103
|
def with_lights
|
@@ -144,15 +142,10 @@ module Sinatra
|
|
144
142
|
|
145
143
|
app.post '/green_all' do
|
146
144
|
data_store.names
|
147
|
-
.reject { |l| Stoplight.
|
145
|
+
.reject { |l| Stoplight::Light.new(l) {}.color == Stoplight::Color::GREEN }
|
148
146
|
.each { |l| green(l) }
|
149
147
|
redirect to('/')
|
150
148
|
end
|
151
|
-
|
152
|
-
app.post '/purge' do
|
153
|
-
purge
|
154
|
-
redirect to('/')
|
155
|
-
end
|
156
149
|
end
|
157
150
|
end
|
158
151
|
|
@@ -3,12 +3,14 @@
|
|
3
3
|
%p Cop lights, flashlights, spotlights, strobe lights…
|
4
4
|
|
5
5
|
.main
|
6
|
-
- if lights.
|
7
|
-
.
|
6
|
+
- if lights.empty?
|
7
|
+
.alert.alert-warning{role: 'alert'}
|
8
|
+
%strong No lights found.
|
9
|
+
Ensure that your Stoplight data store is properly configured and that your Stoplight blocks have been run.
|
10
|
+
- else
|
11
|
+
.well
|
8
12
|
%form{method: 'post', action: url('/green_all')}
|
9
13
|
%button.btn-lg.btn.btn-success{type: 'submit', disabled: count_red + count_yellow > 0 ? nil : 'disabled'} Greenify All
|
10
|
-
%form{method: 'post', action: url('/purge')}
|
11
|
-
%button.btn-lg.btn.btn-default{type: 'submit'} Purge Lights
|
12
14
|
|
13
15
|
.progress
|
14
16
|
.progress-bar.progress-bar-danger{style: "width: #{percent_red}%"}
|
@@ -25,11 +27,9 @@
|
|
25
27
|
%th Status
|
26
28
|
%th
|
27
29
|
%abbr{title: 'Locked lights will not change color automatically.'} Locked?
|
30
|
+
%th Name
|
28
31
|
%th
|
29
32
|
%abbr{title: 'Exceptions which caused the light to turn red.'} Failures
|
30
|
-
%th
|
31
|
-
%abbr{title: 'Number of times the light was invoked while red.'} Attempts
|
32
|
-
%th Name
|
33
33
|
%tbody
|
34
34
|
- lights.each do |l|
|
35
35
|
%tr
|
@@ -63,6 +63,8 @@
|
|
63
63
|
%input{type: 'hidden', name: 'names', value: URI.escape(l[:name])}
|
64
64
|
%button{type: 'submit', class: 'btn btn-link'}
|
65
65
|
%span{class: 'glyphicon glyphicon-minus'}
|
66
|
+
%td.name
|
67
|
+
= l[:name]
|
66
68
|
%td.failures
|
67
69
|
- if l[:failures]
|
68
70
|
%ul
|
@@ -75,12 +77,3 @@
|
|
75
77
|
@
|
76
78
|
%span.timestamp
|
77
79
|
&= failure.time
|
78
|
-
%td.attempts
|
79
|
-
- if l[:attempts] > 0
|
80
|
-
= l[:attempts]
|
81
|
-
%td.name
|
82
|
-
= l[:name]
|
83
|
-
- else
|
84
|
-
.alert.alert-warning{role: 'alert'}
|
85
|
-
%strong No lights found.
|
86
|
-
Ensure that your Stoplight data store is properly configured and that your Stoplight blocks have been run.
|
@@ -6,20 +6,11 @@
|
|
6
6
|
|
7
7
|
%title Stoplight Admin
|
8
8
|
|
9
|
-
%link{rel: 'stylesheet', href: '//maxcdn.bootstrapcdn.com/bootstrap/3.
|
10
|
-
%link{rel: 'stylesheet', href: '//maxcdn.bootstrapcdn.com/bootstrap/3.
|
11
|
-
%link{rel: 'shortcut icon', href: '
|
9
|
+
%link{rel: 'stylesheet', href: '//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css'}
|
10
|
+
%link{rel: 'stylesheet', href: '//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css'}
|
11
|
+
%link{rel: 'shortcut icon', href: '//i.imgur.com/qvfoNuh.png'}
|
12
12
|
|
13
13
|
:css
|
14
|
-
body {
|
15
|
-
padding-top: 70px;
|
16
|
-
padding-bottom: 30px;
|
17
|
-
}
|
18
|
-
|
19
|
-
.progress {
|
20
|
-
margin-top: 30px
|
21
|
-
}
|
22
|
-
|
23
14
|
td.indicator {
|
24
15
|
font-size: 200%;
|
25
16
|
}
|
@@ -46,7 +37,7 @@
|
|
46
37
|
}
|
47
38
|
|
48
39
|
%body
|
49
|
-
.navbar.navbar-inverse.navbar-
|
40
|
+
.navbar.navbar-inverse.navbar-static-top{role: 'navigation'}
|
50
41
|
.container
|
51
42
|
.navbar-header
|
52
43
|
%a{class: 'navbar-brand', href: url('/')} Stoplight Admin
|
@@ -54,4 +45,4 @@
|
|
54
45
|
.container{role: 'main'}
|
55
46
|
= yield
|
56
47
|
|
57
|
-
%script{src: '//maxcdn.bootstrapcdn.com/bootstrap/3.
|
48
|
+
%script{src: '//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js'}
|
data/stoplight-admin.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'stoplight-admin'
|
5
|
-
spec.version = '0.2.
|
5
|
+
spec.version = '0.2.9'
|
6
6
|
spec.authors = ['Cameron Desautels', 'Taylor Fausak']
|
7
7
|
spec.email = %w(camdez@gmail.com taylor@fausak.me)
|
8
8
|
spec.summary = %q{A simple administration interface for the stoplight gem.}
|
@@ -21,5 +21,5 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_dependency 'haml', '~> 4.0.5'
|
22
22
|
spec.add_dependency 'redis', '~> 3.1.0'
|
23
23
|
spec.add_dependency 'sinatra', '~> 1.4.5'
|
24
|
-
spec.add_dependency 'stoplight', '~> 0.
|
24
|
+
spec.add_dependency 'stoplight', '~> 0.5.0'
|
25
25
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stoplight-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Desautels
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-11-
|
12
|
+
date: 2014-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -87,14 +87,14 @@ dependencies:
|
|
87
87
|
requirements:
|
88
88
|
- - ~>
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: 0.
|
90
|
+
version: 0.5.0
|
91
91
|
type: :runtime
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - ~>
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: 0.
|
97
|
+
version: 0.5.0
|
98
98
|
description: A simple administration interface for the stoplight gem.
|
99
99
|
email:
|
100
100
|
- camdez@gmail.com
|
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
134
|
version: '0'
|
135
135
|
requirements: []
|
136
136
|
rubyforge_project:
|
137
|
-
rubygems_version: 2.4.
|
137
|
+
rubygems_version: 2.4.4
|
138
138
|
signing_key:
|
139
139
|
specification_version: 4
|
140
140
|
summary: A simple administration interface for the stoplight gem.
|