lights 0.8.4 → 0.8.5

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzUzMjA0NzFlODMzNmZjODIyZGZlNTQ2NTI3Y2QxNWQ5MjhhZmQ0OA==
4
+ ZGMwYmY0ZDcyN2M2MGI2NmY5ZmM4Y2E4ODFjOTUwOGNmMDU1Mjk5OA==
5
5
  data.tar.gz: !binary |-
6
- YzgxNTIyZGNkODQxOTJhOTI4NDdmZDAzM2VhMzY1MDFmYjhkMGFhMw==
6
+ YzNiZGQ3ZDRlZjk0NjcxNDM0OTI4ZWY3YzVkZGI3YmRhNTU0NGM1ZA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MDMwNzQ0OGUxZTBjYjY1NjY2MWU3Yjg2YWNhMmExYmM1MGIzMWIyZGI3OThl
10
- OWM1MWExYzA1YTVlNTE3NGYzN2MzYzA3MmQwNjAxMTg3YTQzOWFlMjUxMjNm
11
- YmFlMzUyYWJmMDk2ZTFmM2QxYmY5OGQ5ZGE3NWZjYWUyZGIzZDA=
9
+ NjdhMjU5NjJiNjNkNDZlMGI4MDExYWM1ZDZhODNlMWMyMWNhZGViNjU1NWI4
10
+ OTY1MTNkMDVmM2M3YmIyNmIzYmFmZDdiYjY2ODJiYmU1Yjg2NGNhYWEzMTU4
11
+ YmM3NmE1ZTViNDhiNWJjMjUxY2Q2MTQxOTdjOGUzMmYwMDlhMWY=
12
12
  data.tar.gz: !binary |-
13
- ZDRjMjE0NmE2MDVlODVkYTJmNmNhZDc3NzQ5OTkxNmQ4MGRlZWQyMzNlNGVl
14
- YmUzOTYyMjMxZDVjOTBlNzFkZGEzMGM3OGU2MjY1YTUxMzk1YjQzZDVhYmY4
15
- ZjA0ZGRlZTRmY2JiOGI2MmI4MjI5NzY0OThiYjRkZWYxYjk4NWQ=
13
+ ZWY5ZTliNGMzOWI1NTcwOGMyYTVjM2MzYjIwMTczOGIxNmQ5NDM3ZTgxZmY2
14
+ NjZjNWJjNDliZTE5YWIzMDMwNWE3YTg3ZTBmZDYxZDllNDAzM2FjMjUyZWUw
15
+ YmNjOTQ5MzQxNDRkNTIyNzJjNjg3NjM0Zjk1Yzk3OTI3MTU1MzA=
data/bin/lights CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  require 'lights'
4
4
  require 'optparse'
5
+ require 'simpletable'
6
+ include SimpleTable
5
7
 
6
8
  LIGHTS_CONFIG_PATH = "#{ENV["HOME"]}/.lightsconfig"
7
9
 
@@ -137,32 +139,20 @@ class LightsCli
137
139
  bulbs_response.each do |id,value|
138
140
  bulbs << hue.request_bulb_info( id )
139
141
  end
140
- c1w = bulbs.collect{|s|s.id.to_s}.group_by(&:size).max.first + 2
141
- c2w = bulbs.collect{|s|s.name.to_s}.group_by(&:size).max.first + 2
142
- c1w = 4 if c1w < 4
143
- c2w = 6 if c2w < 6
144
-
145
- puts "ID".ljust(c1w) + "NAME".ljust(c2w)
146
- puts "=" * (c1w+c2w)
147
- bulbs.each do |b|
148
- puts b.id.ljust(c1w) + b.name.ljust(c2w)
149
- end
142
+
143
+ titles = ["ID","NAME"]
144
+ methods = [:id,:name]
145
+ SimpleTable.create(bulbs,titles,methods)
150
146
  elsif ARGV[0] == "sensors"
151
147
  sensors_response = hue.request_sensor_list
152
148
  sensors = []
153
149
  sensors_response.each do |id,value|
154
150
  sensors << hue.request_sensor_info( id )
155
151
  end
156
- c1w = sensors.collect{|s|s.id.to_s}.group_by(&:size).max.first + 2
157
- c2w = sensors.collect{|s|s.name.to_s}.group_by(&:size).max.first + 2
158
- c1w = 4 if c1w < 4
159
- c2w = 6 if c2w < 6
160
-
161
- puts "ID".ljust(c1w) + "NAME".ljust(c2w)
162
- puts "=" * (c1w+c2w)
163
- sensors.each do |s|
164
- puts s.id.ljust(c1w) + s.name.ljust(c2w)
165
- end
152
+
153
+ titles = ["ID","NAME"]
154
+ methods = [:id,:name]
155
+ SimpleTable.create(sensors,titles,methods)
166
156
  elsif ARGV[0] == "groups"
167
157
  groups_response = hue.request_group_list
168
158
  groups = []
@@ -170,18 +160,9 @@ class LightsCli
170
160
  groups << hue.request_group_info( id )
171
161
  end
172
162
 
173
- c1w = groups.collect{|g|g.id.to_s}.group_by(&:size).max.first + 2
174
- c2w = groups.collect{|g|g.name.to_s}.group_by(&:size).max.first + 2
175
- c3w = groups.collect{|g|g.lights.to_s}.group_by(&:size).max.first + 2
176
- c1w = 4 if c1w < 4
177
- c2w = 6 if c2w < 6
178
- c3w = 8 if c3w < 8
179
-
180
- puts "ID".ljust(c1w) + "NAME".ljust(c2w) + "LIGHTS".ljust(c3w)
181
- puts "=" * (c1w+c2w+c3w)
182
- groups.each do |g|
183
- puts g.id.ljust(c1w) + g.name.ljust(c2w) + g.lights.join(',').ljust(c3w)
184
- end
163
+ titles = ["ID","NAME","LIGHTS"]
164
+ methods = [:id,:name,:lights]
165
+ SimpleTable.create(groups,titles,methods)
185
166
  elsif ARGV[0] == "scenes"
186
167
  scenes_response = hue.request_scene_list
187
168
  scenes = []
@@ -189,40 +170,29 @@ class LightsCli
189
170
  scenes << Scene.new(id,value)
190
171
  end
191
172
 
192
- c1w = scenes.collect{|s|s.id.to_s}.group_by(&:size).max.first + 2
193
- c2w = scenes.collect{|s|s.name.to_s}.group_by(&:size).max.first + 2
194
- c3w = scenes.collect{|s|s.lights.to_s}.group_by(&:size).max.first + 2
195
- c1w = 4 if c1w < 4
196
- c2w = 6 if c2w < 6
197
- c3w = 8 if c3w < 8
198
-
199
- puts "ID".ljust(c1w) + "NAME".ljust(c2w) + "LIGHTS".ljust(c3w)
200
- puts "=" * (c1w+c2w+c3w)
201
- scenes.each do |s|
202
- puts s.id.ljust(c1w) + s.name.ljust(c2w) + s.lights.join(',').ljust(c3w)
203
- end
173
+ titles = ["ID","NAME","LIGHTS"]
174
+ methods = [:id,:name,:lights]
175
+ SimpleTable.create(scenes,titles,methods)
204
176
  elsif ARGV[0] == "users"
205
177
  config_response = hue.request_config
206
-
207
178
  users = []
208
179
  config_response["whitelist"].each do |id,value|
209
180
  users << User.new(id,value)
210
181
  end
211
-
212
- c1w = users.collect{|u|u.id.to_s}.group_by(&:size).max.first + 2
213
- c2w = users.collect{|u|u.name.to_s}.group_by(&:size).max.first + 2
214
- c3w = users.collect{|u|u.create_date.to_s}.group_by(&:size).max.first + 2
215
- c4w = users.collect{|u|u.last_use_date.to_s}.group_by(&:size).max.first + 2
216
- c1w = 4 if c1w < 4
217
- c2w = 6 if c2w < 6
218
- c3w = 15 if c3w < 15
219
- c4w = 15 if c4w < 15
220
-
221
- puts "ID".ljust(c1w) + "NAME".ljust(c2w) + "CREATE DATE".ljust(c3w) + "LAST USE DATE".ljust(c4w)
222
- puts "=" * (c1w+c2w+c3w+c4w)
223
- users.each do |u|
224
- puts u.id.ljust(c1w) + u.name.ljust(c2w) + u.create_date.ljust(c3w) + u.last_use_date.ljust(c4w)
225
- end
182
+
183
+ titles = ["ID","NAME","CREATE DATE","LAST USE DATE"]
184
+ methods = [:id,:name,:create_date,:last_use_date]
185
+ SimpleTable.create(users,titles,methods)
186
+ elsif ARGV[0] == "rules"
187
+ rules_response = hue.request_rules
188
+ rules = []
189
+ rules_response.each do |id,value|
190
+ rules << Rule.new(id,value)
191
+ end
192
+
193
+ titles = ["ID","NAME"]
194
+ methods = [:id,:name]
195
+ SimpleTable.create(rules,titles,methods)
226
196
  end
227
197
  end
228
198
 
data/lib/lights.rb CHANGED
@@ -11,6 +11,7 @@ require 'lights/exception'
11
11
  require 'lights/sensor'
12
12
  require 'lights/scene'
13
13
  require 'lights/user'
14
+ require 'lights/rule'
14
15
  require 'lights/loggerconfig'
15
16
 
16
17
  def jp( s )
@@ -104,6 +105,10 @@ class Lights
104
105
  get "config"
105
106
  end
106
107
 
108
+ def request_rules
109
+ get "rules"
110
+ end
111
+
107
112
  def set_bulb_state( id, state )
108
113
  put "lights/#{id}/state", state
109
114
  end
@@ -0,0 +1,21 @@
1
+ class Rule
2
+
3
+ attr_reader :id, :data, :name
4
+ def initialize( id = nil, data = {} )
5
+ @id = id
6
+ @data = data
7
+ @name = data["name"]
8
+ end
9
+
10
+ def data
11
+ data = @data
12
+ data["id"] = @id if @id
13
+ data["name"] = @name if @name
14
+ data
15
+ end
16
+
17
+ def to_json
18
+ data.to_json
19
+ end
20
+
21
+ end
data/lib/lights/user.rb CHANGED
@@ -2,7 +2,6 @@ class User
2
2
 
3
3
  attr_reader :id, :name, :create_date, :last_use_date
4
4
  def initialize( id, data = {} )
5
- puts data.inspect
6
5
  @id = id
7
6
  @data = data
8
7
  @name = data["name"]
@@ -1,3 +1,3 @@
1
1
  module LightsConst
2
- VERSION = "0.8.4"
2
+ VERSION = "0.8.5"
3
3
  end
data/lights.gemspec CHANGED
@@ -19,6 +19,8 @@ Gem::Specification.new do |s|
19
19
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
20
20
  s.require_paths = ["lib"]
21
21
 
22
+ s.add_runtime_dependency "simpletable", "~> 0.1.1"
23
+
22
24
  s.add_development_dependency "bundler", "~> 1.3"
23
25
  s.add_development_dependency "rake"
24
26
  s.add_development_dependency "rspec", "~> 2.6"
@@ -28,6 +28,9 @@ Feature: Lights
28
28
  When I run `lights list users`
29
29
  Then the output should contain "ID"
30
30
 
31
+ Scenario: List rules
32
+ When I run `lights list rules`
33
+ Then the output should contain "ID"
31
34
  # This test is failing because OptionParser is casting the string as an integer (0)
32
35
  # Scenario: Incorrect parameters to set
33
36
  # When I run `lights set -l all -h test`
data/spec/rule_spec.rb ADDED
@@ -0,0 +1,15 @@
1
+ require 'lights'
2
+
3
+ describe Rule do
4
+ it "properly reconstucts object hash" do
5
+ data = {
6
+ "name" => "test name",
7
+ "key1" => "value 1",
8
+ "key2" => "value 2",
9
+ }
10
+ rule = Rule.new(1,data)
11
+ rule.id.should eql 1
12
+ rule.name.should eql "test name"
13
+ rule.data.should eql data
14
+ end
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lights
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brady Turner
@@ -10,6 +10,20 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2014-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: simpletable
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -100,6 +114,7 @@ files:
100
114
  - lib/lights/exception.rb
101
115
  - lib/lights/group.rb
102
116
  - lib/lights/loggerconfig.rb
117
+ - lib/lights/rule.rb
103
118
  - lib/lights/scene.rb
104
119
  - lib/lights/sensor.rb
105
120
  - lib/lights/user.rb
@@ -111,6 +126,7 @@ files:
111
126
  - spec/features/lights.feature
112
127
  - spec/features/support/setup.rb
113
128
  - spec/group_spec.rb
129
+ - spec/rule_spec.rb
114
130
  - spec/scene_spec.rb
115
131
  homepage: http://rubygems.org/gems/lights
116
132
  licenses:
@@ -143,4 +159,5 @@ test_files:
143
159
  - spec/features/lights.feature
144
160
  - spec/features/support/setup.rb
145
161
  - spec/group_spec.rb
162
+ - spec/rule_spec.rb
146
163
  - spec/scene_spec.rb