lights 0.8.13 → 0.8.14

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
- MDM3ZmNkN2M5OTJkNjVmZmYzNTBiNzVhNDdiZDJmNWYzNjYxNjA1YQ==
4
+ MTUxOTM1Yjg0NzgyMGJjZDYwMzI5NDFiYTMyMDc0ODUxODlhZjg4ZA==
5
5
  data.tar.gz: !binary |-
6
- YmJjMjVjY2M5M2MyZWFmYTIwMmIyYTE2MjZhNTQxN2JjNTBhNDAxNw==
6
+ YjllMTc5ZDJmM2Q1MjE5NzY0ZGQ5NmZhYTk1NWNjNDY4NzcwN2U2Yg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZDM1NjliNTIxYjc5MDgzYmU0OTMxMTYwZTllMmIxMjQxNTdmMTBkYjhkYjAy
10
- ZDBkZjRjMmVhZGNiODlkMGQzNDNlOTY1NDhlMjEwNWIwZDRjMmFiMjEyZDQ2
11
- ZmQ5MjM1ZjFmNmFjNmE5YTQxZmU0NGZlYWRiYjY3OTUxODA1YzQ=
9
+ YjljMjI2Yzk4MmU2OTVlMjA4OGViMzRiOGM3NDRmNmJiMDYwYjMzNTk2NDZj
10
+ NGE2MzkzMjdjNzhkMDMzZGQ2NWMyNjRkY2FjMGQxNzhkZTY1MjhkMjFkYjg0
11
+ ZWJhOWJiMDRjN2ZjZTZkMDc1N2NkNjNlYjRjOGE0YzQ5ZmFiZDE=
12
12
  data.tar.gz: !binary |-
13
- NmNhNjFmMmRlNjY5Njc2OTQzZDc2YjQ4NDRhOWQ2MDg1NmRhOWFjMDIwMjY3
14
- YWFlZDlkM2IyYWU0ODkxOTBhMmIyOGQxNWZjNGM2ZGFiM2Q3Mjg1OWFkYmRk
15
- MzE5Y2U3ZDE4ZjI5MWVlOTc0MWY3NzQ2MjZjMDRjNGQxMGJiMmQ=
13
+ MGQzM2RhYmZkZmQ3NWZiNzBmOTU3YzVlNzIyZGRkYzM2MjBkNjMyNzNiZTFj
14
+ YmFlZDI4YjgwNzMwYTllMWEzYTc0M2I4MGM5ZjcxOTQ0Mjk3ZTg1MWViZmEz
15
+ NjU3M2NmMzA4ZmFhMjc3ZmQxNmYzMTVlOTg5YmU1MzA3OWJkYjM=
data/README.md CHANGED
@@ -19,13 +19,14 @@ client = Lights.new( '192.168.x.x', 'username' )
19
19
  client.register_username
20
20
  client.request_bulb_list
21
21
  ```
22
+ See [lights-examples](https://github.com/turnerba/lights-examples) for more usage examples.
22
23
 
23
24
  CLI Quick Setup
24
25
  ----
25
26
 
26
27
  ```
27
28
  lights discover -s
28
- lights config -f --user username
29
+ lights config -f --user <username>
29
30
  lights register
30
31
  lights list
31
32
  lights on -l all
data/bin/lights CHANGED
@@ -187,37 +187,37 @@ class LightsCli
187
187
  case type
188
188
  when nil, "","lights"
189
189
  response = options[:new] ? hue.request_new_bulb_list : hue.request_bulb_list
190
- response.each{|id,value| objects << hue.request_bulb_info( id )}
190
+ objects = BulbList.new(response).list
191
191
  titles = ["ID","NAME"]
192
192
  methods = [:id,:name]
193
193
  when "sensors"
194
194
  response = options[:new] ? hue.request_new_sensor_list : hue.request_sensor_list
195
- response.each { |id,value| objects << hue.request_sensor_info( id )}
195
+ objects = SensorList.new(response).list
196
196
  titles = ["ID","NAME"]
197
197
  methods = [:id,:name]
198
198
  when "groups"
199
199
  response = hue.request_group_list
200
- response.each {|id,value| objects << hue.request_group_info( id )}
200
+ objects = GroupList.new(response).list
201
201
  titles = ["ID","NAME","LIGHTS"]
202
202
  methods = [:id,:name,:lights]
203
203
  when "scenes"
204
204
  response = hue.request_scene_list
205
- response.each {|id,value| objects << Scene.new(id,value)}
205
+ objects = SceneList.new(response).list
206
206
  titles = ["ID","NAME","LIGHTS"]
207
207
  methods = [:id,:name,:lights]
208
208
  when "users"
209
209
  response = hue.request_config
210
- response["whitelist"].each {|id,value| objects << User.new(id,value)}
210
+ objects = UserList.new(response["whitelist"]).list
211
211
  titles = ["ID","NAME","CREATE DATE","LAST USE DATE"]
212
212
  methods = [:id,:name,:create_date,:last_use_date]
213
213
  when "rules"
214
214
  response = hue.request_rules
215
- response.each {|id,value| objects << Rule.new(id,value)}
215
+ objects = RuleList.new(response).list
216
216
  titles = ["ID","NAME"]
217
217
  methods = [:id,:name]
218
218
  when "schedules"
219
219
  response = hue.request_schedules
220
- response.each {|id,value| objects << Schedule.new(id,value)}
220
+ objects = ScheduleList.new(response).list
221
221
  titles = ["ID","NAME","TIME","SCENE","STATUS"]
222
222
  methods = [:id,:name,:time,:scene,:status]
223
223
  when "datastore"
@@ -306,10 +306,6 @@ class LightsCli
306
306
  puts "Must specify a state to set."
307
307
  bad_args = true
308
308
  end
309
- if !options[:lights] && !options[:groups]
310
- puts "Must specify which lights/groups to control."
311
- bad_args = true
312
- end
313
309
  if (options[:hue] || options[:saturation]) \
314
310
  && options[:ct]
315
311
  puts "Cannot set both color temperature and hue/saturation."
@@ -357,9 +353,11 @@ class LightsCli
357
353
  end
358
354
 
359
355
  if options[:lights]
360
- set_bulb_state(s,options[:lights])
356
+ set_bulb_state(s,options[:lights])
361
357
  elsif options[:groups]
362
358
  set_group_state(s,options[:groups])
359
+ else
360
+ set_group_state(s,[0])
363
361
  end
364
362
  end
365
363
 
@@ -398,10 +396,7 @@ private
398
396
  opts.on("-l", "--lights 1,2,...N", Array, "Which lights to control"){|l| options[:lights]=l}
399
397
  end.parse!
400
398
 
401
- if !options[:lights]
402
- puts "Must specify which lights to control."
403
- exit 1
404
- end
399
+ options[:lights] = ["all"] if !options[:lights]
405
400
 
406
401
  s = BulbState.new
407
402
  s.on = is_on
data/lib/lights/bridge.rb CHANGED
@@ -1,8 +1,10 @@
1
- class Bridge
1
+ require 'lights/hobject'
2
2
 
3
- attr_reader :id, :ip, :name, :mac
3
+ class Bridge < HObject
4
4
 
5
+ attr_reader :id, :ip, :name, :mac
5
6
  def initialize(data = {})
7
+ super
6
8
  @id = data["id"]
7
9
  @ip = data["internalipaddress"]
8
10
  @mac = data["macaddress"]
data/lib/lights/bulb.rb CHANGED
@@ -1,17 +1,15 @@
1
1
  require 'lights/bulbstate'
2
+ require 'lights/hobject'
2
3
 
3
- class Bulb
4
-
5
- attr_reader :id, :name, :type, :swversion,
6
- :state
7
-
4
+ class Bulb < HObject
5
+ attr_reader :id, :name, :type, :swversion, :state
8
6
  def initialize(id,data = {})
7
+ super(data)
9
8
  @id = id
10
9
  @name = data["name"]
11
10
  @type = data["type"]
12
11
  @swversion = data["swversion"]
13
12
  @state = BulbState.new data["state"]
14
- @data = data
15
13
  end
16
14
 
17
15
  def data
@@ -22,9 +20,5 @@ class Bulb
22
20
  data["state"] = @state.data if !@state.data.empty?
23
21
  data
24
22
  end
25
-
26
- def to_json(options={})
27
- data.to_json
28
- end
29
23
  end
30
24
 
@@ -1,22 +1,9 @@
1
1
  require 'lights/bulb'
2
+ require 'lights/list'
2
3
 
3
- class BulbList
4
-
5
- attr_reader :bulbs
4
+ class BulbList < List
6
5
  def initialize(data = {})
7
- @bulbs = []
8
- data.each{|id,value| @bulbs << Bulb.new(id,value)} if data
9
- @data = data
10
- end
11
-
12
- def data
13
- data = @data
14
- @bulbs.each {|b| data[b.id] = b.data} if @bulbs
15
- data
16
- end
17
-
18
- def to_json(options={})
19
- data.to_json
6
+ super
7
+ data.each{|id,value| @list << Bulb.new(id,value)} if data
20
8
  end
21
9
  end
22
-
@@ -1,4 +1,6 @@
1
- class BulbState
1
+ require 'lights/hobject'
2
+
3
+ class BulbState < HObject
2
4
 
3
5
  MAX_CT = 500
4
6
  MIN_CT = 153
@@ -42,7 +44,8 @@ class BulbState
42
44
  :alert, :effect, :color_mode,
43
45
  :reachable, :transition_time
44
46
  def initialize( data = {} )
45
- data = {} if data == nil
47
+ data = {} if data == nil
48
+ super
46
49
  @on = data["on"]
47
50
  set_bri data["bri"]
48
51
  set_hue data["hue"]
@@ -54,7 +57,6 @@ class BulbState
54
57
  set_color_mode data["colormode"]
55
58
  @reachable = data["reachable"]
56
59
  set_transition_time data["transitiontime"]
57
- @data = data
58
60
  end
59
61
 
60
62
  def color_mode=(value) set_color_mode(value) end
@@ -184,9 +186,5 @@ class BulbState
184
186
  data["transitiontime"] = @transition_time if @transition_time
185
187
  data
186
188
  end
187
-
188
- def to_json(options={})
189
- data.to_json
190
- end
191
189
  end
192
190
 
@@ -1,10 +1,12 @@
1
- class Command
1
+ require 'lights/hobject'
2
+
3
+ class Command < HObject
2
4
  attr_reader :address, :method, :body
3
5
  def initialize(data = {})
6
+ super
4
7
  @address = data["address"]
5
8
  @body = data["body"]
6
9
  @method = data["method"]
7
- @data = data
8
10
  end
9
11
 
10
12
  def data
@@ -14,10 +16,5 @@ class Command
14
16
  data["method"] = @method if @method
15
17
  data
16
18
  end
17
-
18
- def to_json(options={})
19
- data.to_json
20
- end
21
19
  end
22
20
 
23
-
data/lib/lights/config.rb CHANGED
@@ -1,14 +1,13 @@
1
1
  require 'lights/userlist'
2
+ require 'lights/hobject'
2
3
 
3
- class HueConfig
4
-
4
+ class HueConfig < HObject
5
5
  attr_reader :name, :swversion, :whitelist
6
-
7
6
  def initialize(data = {})
7
+ super
8
8
  @name = data["name"]
9
9
  @swversion = data["swversion"]
10
10
  @whitelist = UserList.new(data["whitelist"])
11
- @data = data
12
11
  end
13
12
 
14
13
  def data
@@ -18,9 +17,5 @@ class HueConfig
18
17
  data["whitelist"] = @whitelist.data if !@whitelist.data.empty?
19
18
  data
20
19
  end
21
-
22
- def to_json(options={})
23
- data.to_json
24
- end
25
20
  end
26
21
 
@@ -5,13 +5,13 @@ require 'lights/scenelist'
5
5
  require 'lights/rulelist'
6
6
  require 'lights/schedulelist'
7
7
  require 'lights/sensorlist'
8
+ require 'lights/hobject'
8
9
 
9
- class Datastore
10
-
10
+ class Datastore < HObject
11
11
  attr_reader :lights, :groups, :config, :rules,
12
12
  :scenes, :schedules, :sensors
13
13
  def initialize(data = {})
14
- @data = {}
14
+ super
15
15
  @lights = BulbList.new(data["lights"])
16
16
  @groups = GroupList.new(data["groups"])
17
17
  @config = HueConfig.new(data["config"])
@@ -22,13 +22,13 @@ class Datastore
22
22
  end
23
23
 
24
24
  def all
25
- @lights.bulbs + \
26
- @groups.groups + \
25
+ @lights.list + \
26
+ @groups.list + \
27
27
  [@config] + \
28
- @schedules.schedules + \
29
- @scenes.scenes + \
30
- @rules.rules + \
31
- @sensors.sensors
28
+ @schedules.list + \
29
+ @scenes.list + \
30
+ @rules.list + \
31
+ @sensors.list
32
32
  end
33
33
 
34
34
  def data
@@ -42,9 +42,5 @@ class Datastore
42
42
  data["sensors"] = @sensors.data if !@sensors.data.empty?
43
43
  data
44
44
  end
45
-
46
- def to_json(options={})
47
- data.to_json
48
- end
49
45
  end
50
46
 
data/lib/lights/group.rb CHANGED
@@ -1,19 +1,16 @@
1
- class Group
1
+ require 'lights/hobject'
2
2
 
3
- attr_reader :id, :data, :name, :lights
4
- attr_writer :name, :lights
3
+ class Group < HObject
4
+ attr_reader :id, :data, :name, :lights, :action
5
+ attr_writer :name, :lights, :action
5
6
  def initialize( id = nil, data = {} )
7
+ super(data)
6
8
  @id = id
7
- @data = data
8
9
  @action = BulbState.new(data["action"])
9
10
  @name = data["name"]
10
11
  @lights = data["lights"]
11
12
  end
12
13
 
13
- def action
14
- @action.data
15
- end
16
-
17
14
  def data
18
15
  data = @data
19
16
  data["name"] = @name if @name
@@ -21,8 +18,4 @@ class Group
21
18
  data["action"] = @action.data if @action.data != {}
22
19
  data
23
20
  end
24
-
25
- def to_json(options={})
26
- data.to_json
27
- end
28
21
  end
@@ -1,22 +1,10 @@
1
1
  require 'lights/group'
2
+ require 'lights/list'
2
3
 
3
- class GroupList
4
-
5
- attr_reader :groups
4
+ class GroupList < List
6
5
  def initialize(data = {})
7
- @groups = []
8
- data.each{|id,value| @groups << Group.new(id,value)} if data
9
- @data = data
10
- end
11
-
12
- def data
13
- data = @data
14
- @groups.each {|g| data[g.id] = g.data} if @groups
15
- data
16
- end
17
-
18
- def to_json(options={})
19
- data.to_json
6
+ super
7
+ data.each{|id,value| @list << Group.new(id,value)} if data
20
8
  end
21
9
  end
22
10
 
@@ -0,0 +1,10 @@
1
+ class HObject
2
+ def initialize(data={})
3
+ @data = data
4
+ end
5
+
6
+ def to_json(options={})
7
+ data.to_json
8
+ end
9
+ end
10
+
@@ -0,0 +1,22 @@
1
+ require 'forwardable'
2
+
3
+ require 'lights/hobject'
4
+
5
+ class List < HObject
6
+ include Enumerable
7
+ extend Forwardable
8
+ def_delegators :@list, :each, :<< ,:+
9
+
10
+ attr_reader :list
11
+ def initialize(data = {})
12
+ super
13
+ @list = []
14
+ end
15
+
16
+ def data
17
+ data = @data
18
+ @list.each {|b| data[b.id] = b.data} if @list
19
+ data
20
+ end
21
+ end
22
+
data/lib/lights/rule.rb CHANGED
@@ -1,9 +1,10 @@
1
- class Rule
1
+ require 'lights/hobject'
2
2
 
3
+ class Rule < HObject
3
4
  attr_reader :id, :data, :name
4
5
  def initialize( id = nil, data = {} )
6
+ super(data)
5
7
  @id = id
6
- @data = data
7
8
  @name = data["name"]
8
9
  end
9
10
 
@@ -12,8 +13,4 @@ class Rule
12
13
  data["name"] = @name if @name
13
14
  data
14
15
  end
15
-
16
- def to_json(options={})
17
- data.to_json
18
- end
19
16
  end
@@ -1,22 +1,10 @@
1
1
  require 'lights/rule'
2
+ require 'lights/list'
2
3
 
3
- class RuleList
4
-
5
- attr_reader :rules
4
+ class RuleList < List
6
5
  def initialize(data = {})
7
- @rules = []
8
- data.each{|id,value| @rules << Rule.new(id,value)} if data
9
- @data = data
10
- end
11
-
12
- def data
13
- data = @data
14
- @rules.each {|b| data[b.id] = b.data} if @rules
15
- data
16
- end
17
-
18
- def to_json(options={})
19
- data.to_json
6
+ super
7
+ data.each{|id,value| @list << Rule.new(id,value)} if data
20
8
  end
21
9
  end
22
10
 
data/lib/lights/scene.rb CHANGED
@@ -1,8 +1,9 @@
1
- class Scene
1
+ require 'lights/hobject'
2
2
 
3
+ class Scene < HObject
3
4
  attr_reader :id, :name, :active, :lights
4
-
5
5
  def initialize(id,data = {})
6
+ super(data)
6
7
  @id = id
7
8
  @name = data["name"]
8
9
  @active = data["active"]
@@ -16,9 +17,5 @@ class Scene
16
17
  data["lights"] = @lights if @lights
17
18
  data
18
19
  end
19
-
20
- def to_json(options={})
21
- data.to_json
22
- end
23
20
  end
24
21
 
@@ -1,22 +1,10 @@
1
1
  require 'lights/scene'
2
+ require 'lights/list'
2
3
 
3
- class SceneList
4
-
5
- attr_reader :scenes
4
+ class SceneList < List
6
5
  def initialize(data = {})
7
- @scenes = []
8
- data.each{|id,value| @scenes << Scene.new(id,value)} if data
9
- @data = data
10
- end
11
-
12
- def data
13
- data = @data
14
- @scenes.each {|b| data[b.id] = b.data} if @scenes
15
- data
16
- end
17
-
18
- def to_json(options={})
19
- data.to_json
6
+ super
7
+ data.each{|id,value| @list << Scene.new(id,value)} if data
20
8
  end
21
9
  end
22
10
 
@@ -1,14 +1,15 @@
1
1
  require 'lights/command'
2
+ require 'lights/hobject'
2
3
 
3
- class Schedule
4
+ class Schedule < HObject
4
5
  attr_reader :id, :name, :time, :status
5
6
  def initialize(id,data = {})
7
+ super(data)
6
8
  @id = id
7
9
  @name = data["name"]
8
10
  @time = data["time"]
9
11
  @status = data["status"]
10
12
  @command = Command.new(data["command"])
11
- @data = data
12
13
  end
13
14
 
14
15
  def scene
@@ -23,9 +24,5 @@ class Schedule
23
24
  data["command"] = @command.data if !@command.data.empty?
24
25
  data
25
26
  end
26
-
27
- def to_json(options={})
28
- data.to_json
29
- end
30
27
  end
31
28
 
@@ -1,22 +1,10 @@
1
1
  require 'lights/schedule'
2
+ require 'lights/list'
2
3
 
3
- class ScheduleList
4
-
5
- attr_reader :schedules
4
+ class ScheduleList < List
6
5
  def initialize(data = {})
7
- @schedules = []
8
- data.each{|id,value| @schedules << Schedule.new(id,value)} if data
9
- @data = data
10
- end
11
-
12
- def data
13
- data = @data
14
- @schedules.each {|s| data[s.id] = s.data} if @schedules
15
- data
16
- end
17
-
18
- def to_json(options={})
19
- data.to_json
6
+ super
7
+ data.each{|id,value| @list << Schedule.new(id,value)} if data
20
8
  end
21
9
  end
22
10
 
data/lib/lights/sensor.rb CHANGED
@@ -1,7 +1,7 @@
1
- class SensorState
2
- attr_reader :data, :last_updated
1
+ class SensorState < HObject
2
+ attr_reader :last_updated
3
3
  def initialize(data)
4
- @data = data
4
+ super
5
5
  @last_updated = data["lastupdated"]
6
6
  end
7
7
 
@@ -10,17 +10,13 @@ class SensorState
10
10
  data["lastupdated"] = @last_updated if @last_updated
11
11
  data
12
12
  end
13
-
14
- def to_json(options={})
15
- data.to_json
16
- end
17
13
  end
18
14
 
19
15
  class TapState < SensorState
20
16
  attr_reader :button_event
21
17
  def initialize(data)
22
- @button_event = data["button_event"]
23
18
  super
19
+ @button_event = data["button_event"]
24
20
  end
25
21
 
26
22
  def data
@@ -28,17 +24,13 @@ class TapState < SensorState
28
24
  data["button_event"] = @button_event if @button_event
29
25
  data
30
26
  end
31
-
32
- def to_json(options={})
33
- data.to_json
34
- end
35
27
  end
36
28
 
37
- class Sensor
29
+ class Sensor < HObject
38
30
  attr_reader :id, :data, :name, :type, :model_id, :manufacturer_name, :unique_id, :sw_version, :state
39
31
  def initialize( id, data = {} )
32
+ super(data)
40
33
  @id = id
41
- @data = data
42
34
  @name = data["name"]
43
35
  @type = data["type"]
44
36
  @model_id = data["modelid"]
@@ -60,8 +52,4 @@ class Sensor
60
52
  data["state"] = @state.data if @state.data if !@state.data.empty?
61
53
  data
62
54
  end
63
-
64
- def to_json(options={})
65
- data.to_json
66
- end
67
55
  end
@@ -1,23 +1,10 @@
1
1
  require 'lights/sensor'
2
+ require 'lights/list'
2
3
 
3
- class SensorList
4
-
5
- attr_reader :sensors
6
-
4
+ class SensorList < List
7
5
  def initialize(data = {})
8
- @sensors = []
9
- data.each{|id,value| @sensors << Sensor.new(id,value)} if data
10
- @data = data
11
- end
12
-
13
- def data
14
- data = @data
15
- @sensors.each {|s| data[s.id] = s.data} if @sensors
16
- data
17
- end
18
-
19
- def to_json(options={})
20
- data.to_json
6
+ super
7
+ data.each{|id,value| @list << Sensor.new(id,value)} if data
21
8
  end
22
9
  end
23
10
 
data/lib/lights/user.rb CHANGED
@@ -1,9 +1,10 @@
1
- class User
1
+ require 'lights/hobject'
2
2
 
3
+ class User < HObject
3
4
  attr_reader :id, :name, :create_date, :last_use_date
4
5
  def initialize( id, data = {} )
6
+ super(data)
5
7
  @id = id
6
- @data = data
7
8
  @name = data["name"]
8
9
  @create_date = data["create date"]
9
10
  @last_use_date = data["last use date"]
@@ -16,8 +17,4 @@ class User
16
17
  data["last use date"] = @last_use_date if @last_use_date
17
18
  data
18
19
  end
19
-
20
- def to_json(options={})
21
- data.to_json
22
- end
23
20
  end
@@ -1,22 +1,10 @@
1
1
  require 'lights/user'
2
+ require 'lights/list'
2
3
 
3
- class UserList
4
-
5
- attr_reader :users
4
+ class UserList < List
6
5
  def initialize(data = {})
7
- @users = []
8
- data.each{|id,value| @users << User.new(id,value)} if data
9
- @data = data
10
- end
11
-
12
- def data
13
- data = @data
14
- @users.each {|u| data[u.id] = u.data} if @users
15
- data
16
- end
17
-
18
- def to_json(options={})
19
- data.to_json
6
+ super
7
+ data.each{|id,value| @list << User.new(id,value)} if data
20
8
  end
21
9
  end
22
10
 
@@ -1,3 +1,3 @@
1
1
  module LightsConst
2
- VERSION = "0.8.13"
2
+ VERSION = "0.8.14"
3
3
  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.13
4
+ version: 0.8.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brady Turner
@@ -118,6 +118,8 @@ files:
118
118
  - lib/lights/exception.rb
119
119
  - lib/lights/group.rb
120
120
  - lib/lights/grouplist.rb
121
+ - lib/lights/hobject.rb
122
+ - lib/lights/list.rb
121
123
  - lib/lights/loggerconfig.rb
122
124
  - lib/lights/rule.rb
123
125
  - lib/lights/rulelist.rb