openhab-jrubyscripting 5.0.0.rc3 → 5.0.0.rc4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/openhab/core/actions.rb +6 -2
- data/lib/openhab/core/items/metadata/hash.rb +2 -1
- data/lib/openhab/core/items/persistence.rb +1 -1
- data/lib/openhab/core/items/semantics.rb +18 -22
- data/lib/openhab/core/profile_factory.rb +13 -3
- data/lib/openhab/core/provider.rb +3 -3
- data/lib/openhab/core/rules/module.rb +26 -0
- data/lib/openhab/core/rules/provider.rb +15 -0
- data/lib/openhab/core/script_handling.rb +32 -3
- data/lib/openhab/core_ext/java/month.rb +1 -1
- data/lib/openhab/core_ext/ruby/date.rb +1 -0
- data/lib/openhab/dsl/rules/builder.rb +1 -1
- data/lib/openhab/dsl/rules/rule_triggers.rb +1 -1
- data/lib/openhab/dsl/rules/triggers/conditions/duration.rb +1 -1
- data/lib/openhab/dsl/version.rb +1 -1
- data/lib/openhab/log.rb +7 -0
- data/lib/openhab/rspec/hooks.rb +3 -4
- data/lib/openhab/rspec/karaf.rb +5 -0
- metadata +3 -3
- data/lib/openhab/dsl/script_handling.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e06b71ae524165363db99771e7ef601f542ed14c979572d152b079d70ad82a2
|
4
|
+
data.tar.gz: 0d6002391ed26a68bbb907d94787f510df30ef6ef9a3a7cd445ac9c47122851b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05a3016219eaf41fc4af71f1476029e2b8d0b320afc7bed99e9777b7726afc6897328d9aa92f643132e66d647aae8742eca36f26c703ab3763e1738c55d249e1
|
7
|
+
data.tar.gz: d5a7d65543b3628e5c3abfa61cb2aa6d6f10e2ab2bb3334d9f38e1ee8952da655da6360c156d926bd53b25c013c86c7672dc1b492c85aaa056e898579a7be7dd
|
data/lib/openhab/core/actions.rb
CHANGED
@@ -66,11 +66,15 @@ module OpenHAB
|
|
66
66
|
#
|
67
67
|
module Actions
|
68
68
|
OSGi.services("org.openhab.core.model.script.engine.action.ActionService")&.each do |service|
|
69
|
-
java_import service.action_class.ruby_class
|
69
|
+
klass = (java_import service.action_class.ruby_class).first
|
70
70
|
logger.trace("Loaded ACTION: #{service.action_class}")
|
71
|
+
Object.const_set(service.action_class.simple_name, klass)
|
71
72
|
end
|
72
73
|
# Import common actions
|
73
|
-
%w[Exec HTTP Ping].each
|
74
|
+
%w[Exec HTTP Ping].each do |action|
|
75
|
+
klass = (java_import "org.openhab.core.model.script.actions.#{action}").first
|
76
|
+
Object.const_set(action, klass)
|
77
|
+
end
|
74
78
|
|
75
79
|
module_function
|
76
80
|
|
@@ -380,6 +380,7 @@ module OpenHAB
|
|
380
380
|
|
381
381
|
[value, to_h].inspect
|
382
382
|
end
|
383
|
+
remove_method :to_s
|
383
384
|
alias_method :to_s, :inspect
|
384
385
|
|
385
386
|
#
|
@@ -399,7 +400,7 @@ module OpenHAB
|
|
399
400
|
return preferred_provider unless provider
|
400
401
|
|
401
402
|
unless provider.is_a?(org.openhab.core.common.registry.ManagedProvider)
|
402
|
-
raise FrozenError, "Cannot modify metadata from provider #{provider.inspect}"
|
403
|
+
raise FrozenError, "Cannot modify metadata from provider #{provider.inspect} for #{uid}."
|
403
404
|
end
|
404
405
|
|
405
406
|
if preferred_provider != provider
|
@@ -286,7 +286,7 @@ module OpenHAB
|
|
286
286
|
# @return [Object] QuantityType or the original value
|
287
287
|
#
|
288
288
|
def quantify(value)
|
289
|
-
if value.is_a?(DecimalType) && unit
|
289
|
+
if value.is_a?(DecimalType) && respond_to?(:unit) && unit
|
290
290
|
logger.trace("Unitizing #{value} with unit #{unit}")
|
291
291
|
QuantityType.new(value.to_big_decimal, unit)
|
292
292
|
else
|
@@ -187,11 +187,6 @@ module OpenHAB
|
|
187
187
|
# end
|
188
188
|
#
|
189
189
|
|
190
|
-
# @!visibility private
|
191
|
-
# import the actual semantics action
|
192
|
-
SemanticsAction = org.openhab.core.model.script.actions.Semantics
|
193
|
-
private_constant :SemanticsAction
|
194
|
-
|
195
190
|
# import all the semantics constants
|
196
191
|
[org.openhab.core.semantics.model.point.Points,
|
197
192
|
org.openhab.core.semantics.model.property.Properties,
|
@@ -223,6 +218,7 @@ module OpenHAB
|
|
223
218
|
# Property = org.openhab.core.semantics.Property
|
224
219
|
|
225
220
|
# put ourself into the global namespace, replacing the action
|
221
|
+
Object.send(:remove_const, :Semantics)
|
226
222
|
::Semantics = self # rubocop:disable Naming/ConstantName
|
227
223
|
|
228
224
|
#
|
@@ -234,7 +230,7 @@ module OpenHAB
|
|
234
230
|
# @return [true, false]
|
235
231
|
#
|
236
232
|
def location?
|
237
|
-
|
233
|
+
Actions::Semantics.location?(self)
|
238
234
|
end
|
239
235
|
|
240
236
|
#
|
@@ -246,7 +242,7 @@ module OpenHAB
|
|
246
242
|
# @return [true, false]
|
247
243
|
#
|
248
244
|
def equipment?
|
249
|
-
|
245
|
+
Actions::Semantics.equipment?(self)
|
250
246
|
end
|
251
247
|
|
252
248
|
# Checks if this Item is a {Point}
|
@@ -257,7 +253,7 @@ module OpenHAB
|
|
257
253
|
# @return [true, false]
|
258
254
|
#
|
259
255
|
def point?
|
260
|
-
|
256
|
+
Actions::Semantics.point?(self)
|
261
257
|
end
|
262
258
|
|
263
259
|
#
|
@@ -280,7 +276,7 @@ module OpenHAB
|
|
280
276
|
# @return [GenericItem, nil]
|
281
277
|
#
|
282
278
|
def location
|
283
|
-
|
279
|
+
Actions::Semantics.get_location(self)&.then(&Proxy.method(:new))
|
284
280
|
end
|
285
281
|
|
286
282
|
#
|
@@ -293,7 +289,7 @@ module OpenHAB
|
|
293
289
|
# @return [Class, nil]
|
294
290
|
#
|
295
291
|
def location_type
|
296
|
-
|
292
|
+
Actions::Semantics.get_location_type(self)&.ruby_class
|
297
293
|
end
|
298
294
|
|
299
295
|
#
|
@@ -306,7 +302,7 @@ module OpenHAB
|
|
306
302
|
# @return [GenericItem, nil]
|
307
303
|
#
|
308
304
|
def equipment
|
309
|
-
|
305
|
+
Actions::Semantics.get_equipment(self)&.then(&Proxy.method(:new))
|
310
306
|
end
|
311
307
|
|
312
308
|
#
|
@@ -319,7 +315,7 @@ module OpenHAB
|
|
319
315
|
# @return [Class, nil]
|
320
316
|
#
|
321
317
|
def equipment_type
|
322
|
-
|
318
|
+
Actions::Semantics.get_equipment_type(self)&.ruby_class
|
323
319
|
end
|
324
320
|
|
325
321
|
#
|
@@ -330,7 +326,7 @@ module OpenHAB
|
|
330
326
|
# @return [Class, nil]
|
331
327
|
#
|
332
328
|
def point_type
|
333
|
-
|
329
|
+
Actions::Semantics.get_point_type(self)&.ruby_class
|
334
330
|
end
|
335
331
|
|
336
332
|
#
|
@@ -341,7 +337,7 @@ module OpenHAB
|
|
341
337
|
# @return [Class, nil]
|
342
338
|
#
|
343
339
|
def property_type
|
344
|
-
|
340
|
+
Actions::Semantics.get_property_type(self)&.ruby_class
|
345
341
|
end
|
346
342
|
|
347
343
|
# @!attribute [r] semantic_type
|
@@ -355,7 +351,7 @@ module OpenHAB
|
|
355
351
|
# @return [Class, nil]
|
356
352
|
#
|
357
353
|
def semantic_type
|
358
|
-
|
354
|
+
Actions::Semantics.get_semantic_type(self)&.ruby_class
|
359
355
|
end
|
360
356
|
|
361
357
|
#
|
@@ -409,7 +405,7 @@ module Enumerable
|
|
409
405
|
# Returns a new array of items that are a semantics Location (optionally of the given type)
|
410
406
|
# @return [Array<GenericItem>]
|
411
407
|
def locations(type = nil)
|
412
|
-
if type && (!type.is_a?(Module) || !(type <
|
408
|
+
if type && (!type.is_a?(Module) || !(type < Semantics::Location))
|
413
409
|
raise ArgumentError, "type must be a subclass of Location"
|
414
410
|
end
|
415
411
|
|
@@ -432,7 +428,7 @@ module Enumerable
|
|
432
428
|
# @example Get all TVs in a room
|
433
429
|
# lGreatRoom.equipments(Semantics::Screen)
|
434
430
|
def equipments(type = nil)
|
435
|
-
if type && (!type.is_a?(Module) || !(type <
|
431
|
+
if type && (!type.is_a?(Module) || !(type < Semantics::Equipment))
|
436
432
|
raise ArgumentError, "type must be a subclass of Equipment"
|
437
433
|
end
|
438
434
|
|
@@ -457,19 +453,19 @@ module Enumerable
|
|
457
453
|
end
|
458
454
|
unless point_or_property_types.all? do |tag|
|
459
455
|
tag.is_a?(Module) &&
|
460
|
-
(tag <
|
456
|
+
(tag < Semantics::Point || tag < Semantics::Property)
|
461
457
|
end
|
462
458
|
raise ArgumentError, "point_or_property_types must all be a subclass of Point or Property"
|
463
459
|
end
|
464
|
-
if point_or_property_types.count { |tag| tag <
|
465
|
-
point_or_property_types.count { |tag| tag <
|
460
|
+
if point_or_property_types.count { |tag| tag < Semantics::Point } > 1 ||
|
461
|
+
point_or_property_types.count { |tag| tag < Semantics::Property } > 1
|
466
462
|
raise ArgumentError, "point_or_property_types cannot both be a subclass of Point or Property"
|
467
463
|
end
|
468
464
|
|
469
465
|
select do |point|
|
470
466
|
point.point? && point_or_property_types.all? do |tag|
|
471
|
-
(tag <
|
472
|
-
(tag <
|
467
|
+
(tag < Semantics::Point && point.point_type <= tag) ||
|
468
|
+
(tag < Semantics::Property && point.property_type&.<=(tag))
|
473
469
|
end
|
474
470
|
end
|
475
471
|
end
|
@@ -98,6 +98,19 @@ module OpenHAB
|
|
98
98
|
|
99
99
|
def initialize
|
100
100
|
@profiles = {}
|
101
|
+
|
102
|
+
@registration = OSGi.register_service(self)
|
103
|
+
ScriptHandling.script_unloaded { unregister }
|
104
|
+
end
|
105
|
+
|
106
|
+
#
|
107
|
+
# Unregister the ProfileFactory OSGi service
|
108
|
+
#
|
109
|
+
# @!visibility private
|
110
|
+
# @return [void]
|
111
|
+
#
|
112
|
+
def unregister
|
113
|
+
@registration.unregister
|
101
114
|
end
|
102
115
|
|
103
116
|
# @!visibility private
|
@@ -113,8 +126,5 @@ module OpenHAB
|
|
113
126
|
@profiles.keys
|
114
127
|
end
|
115
128
|
end
|
116
|
-
|
117
|
-
registration = OSGi.register_service(ProfileFactory.instance)
|
118
|
-
ScriptHandling.script_unloaded { registration.unregister }
|
119
129
|
end
|
120
130
|
end
|
@@ -212,11 +212,11 @@ module OpenHAB
|
|
212
212
|
|
213
213
|
private
|
214
214
|
|
215
|
-
def initialize
|
216
|
-
super
|
215
|
+
def initialize(script_unloaded_before: nil)
|
216
|
+
super()
|
217
217
|
@elements = {}
|
218
218
|
self.class.registry.add_provider(self)
|
219
|
-
ScriptHandling.script_unloaded { unregister }
|
219
|
+
ScriptHandling.script_unloaded(before: script_unloaded_before) { unregister }
|
220
220
|
end
|
221
221
|
end
|
222
222
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OpenHAB
|
4
|
+
module Core
|
5
|
+
module Rules
|
6
|
+
# @interface
|
7
|
+
java_import org.openhab.core.automation.Module
|
8
|
+
|
9
|
+
# @!visibility private
|
10
|
+
module Module
|
11
|
+
# @return [String]
|
12
|
+
def inspect
|
13
|
+
r = "#<OpenHAB::Core::Rules::#{self.class.simple_name} #{id} (#{type_uid})"
|
14
|
+
r += " #{label.inspect}" if label
|
15
|
+
r += " configuration=#{configuration.properties.to_h}" unless configuration.properties.empty?
|
16
|
+
"#{r}>"
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [String]
|
20
|
+
def to_s
|
21
|
+
id
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -19,6 +19,21 @@ module OpenHAB
|
|
19
19
|
$rules
|
20
20
|
end
|
21
21
|
end
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
super(script_unloaded_before: lambda do |callbacks|
|
25
|
+
callbacks.index do |cb|
|
26
|
+
case cb.binding.receiver
|
27
|
+
when Items::Provider,
|
28
|
+
Things::Provider,
|
29
|
+
DSL::TimerManager
|
30
|
+
true
|
31
|
+
else
|
32
|
+
false
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end)
|
36
|
+
end
|
22
37
|
end
|
23
38
|
end
|
24
39
|
end
|
@@ -29,9 +29,11 @@ module OpenHAB
|
|
29
29
|
# end
|
30
30
|
#
|
31
31
|
def script_loaded(&block)
|
32
|
-
|
32
|
+
ScriptHandlingCallbacks.script_loaded_hooks << block
|
33
33
|
end
|
34
34
|
|
35
|
+
#
|
36
|
+
# @!method script_unloaded(&block)
|
35
37
|
#
|
36
38
|
# Add a block of code to be executed when the script is unloaded.
|
37
39
|
#
|
@@ -47,8 +49,10 @@ module OpenHAB
|
|
47
49
|
# logger.info 'Hi, this script has been unloaded'
|
48
50
|
# end
|
49
51
|
#
|
50
|
-
def script_unloaded(&block)
|
51
|
-
|
52
|
+
def script_unloaded(before: nil, &block)
|
53
|
+
# `before` is as yet undocumented, because I'm not set on its interface
|
54
|
+
index = before.call(ScriptHandlingCallbacks.script_unloaded_hooks) if before
|
55
|
+
ScriptHandlingCallbacks.script_unloaded_hooks.insert(index || -1, block)
|
52
56
|
end
|
53
57
|
end
|
54
58
|
|
@@ -58,6 +62,13 @@ module OpenHAB
|
|
58
62
|
# @!visibility private
|
59
63
|
module ScriptHandlingCallbacks
|
60
64
|
class << self
|
65
|
+
#
|
66
|
+
# Has the script completed loading?
|
67
|
+
#
|
68
|
+
# @!visibility private
|
69
|
+
# @return [true, false]
|
70
|
+
attr_accessor :script_loaded
|
71
|
+
|
61
72
|
#
|
62
73
|
# Return script_loaded_hooks
|
63
74
|
#
|
@@ -74,6 +85,7 @@ module OpenHAB
|
|
74
85
|
@script_unloaded_hooks ||= []
|
75
86
|
end
|
76
87
|
end
|
88
|
+
self.script_loaded = false
|
77
89
|
|
78
90
|
#
|
79
91
|
# Executed when OpenHAB unloads a script file
|
@@ -85,6 +97,22 @@ module OpenHAB
|
|
85
97
|
rescue => e
|
86
98
|
logger.error("Failed to call script_unloaded hook #{hook}: #{e}")
|
87
99
|
end
|
100
|
+
|
101
|
+
return if ScriptHandlingCallbacks.script_loaded
|
102
|
+
|
103
|
+
# Make sure we terminate the main thread if it's still set up, in case
|
104
|
+
# it's timing out and that's why we're unloading.
|
105
|
+
#
|
106
|
+
# It would seem simpler to just record Thread.current when this file
|
107
|
+
# loads, but if the user is using the autorequire feature of the
|
108
|
+
# jrubyscripting addon, this file will load before the main script.
|
109
|
+
#
|
110
|
+
# Note that Thread.list only includes threads that have had Ruby
|
111
|
+
# execute in them, so we don't need to worry about accidentally killing
|
112
|
+
# a random Java thread.
|
113
|
+
#
|
114
|
+
main_thread = Thread.list.find { |t| t != Thread.current && t.name.include?("-safeCall-") }
|
115
|
+
main_thread&.raise(Interrupt.new)
|
88
116
|
end
|
89
117
|
|
90
118
|
#
|
@@ -97,6 +125,7 @@ module OpenHAB
|
|
97
125
|
rescue => e
|
98
126
|
logger.error("Failed to call script_loaded hook #{hook}: #{e}")
|
99
127
|
end
|
128
|
+
ScriptHandlingCallbacks.script_loaded = true
|
100
129
|
end
|
101
130
|
end
|
102
131
|
end
|
@@ -1417,7 +1417,7 @@ module OpenHAB
|
|
1417
1417
|
added_rule = add_rule(provider, rule)
|
1418
1418
|
# add config so that MainUI can show the script
|
1419
1419
|
added_rule.actions.first.configuration.put("type", "application/x-ruby")
|
1420
|
-
added_rule.actions.first.configuration.put("script", script)
|
1420
|
+
added_rule.actions.first.configuration.put("script", script) if script
|
1421
1421
|
|
1422
1422
|
rule.execute(nil, { "event" => Struct.new(:attachment).new(start_attachment) }) if on_start?
|
1423
1423
|
added_rule
|
@@ -44,7 +44,7 @@ module OpenHAB
|
|
44
44
|
def append_trigger(type:, config:, attach: nil, conditions: nil)
|
45
45
|
config.transform_keys!(&:to_s)
|
46
46
|
RuleTriggers.trigger(type: type, config: config).tap do |trigger|
|
47
|
-
logger.trace("Appending trigger (#{trigger}) attach (#{attach}) conditions(#{conditions})")
|
47
|
+
logger.trace("Appending trigger (#{trigger.inspect}) attach (#{attach}) conditions(#{conditions})")
|
48
48
|
@triggers << trigger
|
49
49
|
@attachments[trigger.id] = attach if attach
|
50
50
|
@trigger_conditions[trigger.id] = conditions if conditions
|
@@ -109,7 +109,7 @@ module OpenHAB
|
|
109
109
|
state, = retrieve_states(inputs)
|
110
110
|
if state == @tracking_to
|
111
111
|
logger.trace("Item changed to #{state} for #{self}, rescheduling timer.")
|
112
|
-
@timer.reschedule(
|
112
|
+
@timer.reschedule(@duration)
|
113
113
|
else
|
114
114
|
logger.trace("Item changed to #{state} for #{self}, canceling timer.")
|
115
115
|
@timer.cancel
|
data/lib/openhab/dsl/version.rb
CHANGED
data/lib/openhab/log.rb
CHANGED
@@ -235,12 +235,19 @@ module OpenHAB
|
|
235
235
|
alias_method :to_s, :inspect
|
236
236
|
|
237
237
|
# @!attribute [rw] level
|
238
|
+
#
|
239
|
+
# @note When a logger's level is modified, the logging infrastructure has
|
240
|
+
# to reload, and logging may be completely unavailable for a short time.
|
241
|
+
#
|
238
242
|
# @return [:error,:warn,:info,:debug,:trace] The current log level
|
243
|
+
#
|
239
244
|
def level
|
240
245
|
Logger.log_service.get_level(name)[name]&.downcase&.to_sym
|
241
246
|
end
|
242
247
|
|
243
248
|
def level=(level)
|
249
|
+
return if self.level == level
|
250
|
+
|
244
251
|
Logger.log_service.set_level(name, level.to_s)
|
245
252
|
end
|
246
253
|
|
data/lib/openhab/rspec/hooks.rb
CHANGED
@@ -57,9 +57,8 @@ module OpenHAB
|
|
57
57
|
tm.class.field_reader :storage
|
58
58
|
tm.storage.keys.each { |k| tm.storage.remove(k) } # rubocop:disable Style/HashEachMethods not a hash
|
59
59
|
|
60
|
-
profile_factory = Core::ProfileFactory.send(:new)
|
61
|
-
|
62
|
-
allow(Core::ProfileFactory).to receive(:instance).and_return(profile_factory)
|
60
|
+
@profile_factory = Core::ProfileFactory.send(:new)
|
61
|
+
allow(Core::ProfileFactory).to receive(:instance).and_return(@profile_factory)
|
63
62
|
|
64
63
|
stub_const("OpenHAB::Core::Timer", Mocks::Timer) if self.class.mock_timers?
|
65
64
|
|
@@ -72,7 +71,7 @@ module OpenHAB
|
|
72
71
|
config.after do
|
73
72
|
Core::Items::Proxy.reset_cache
|
74
73
|
Core::Things::Proxy.reset_cache
|
75
|
-
@
|
74
|
+
@profile_factory.unregister
|
76
75
|
timers.cancel_all
|
77
76
|
# timers and rules have already been canceled, so we can safely just
|
78
77
|
# wipe this
|
data/lib/openhab/rspec/karaf.rb
CHANGED
@@ -429,6 +429,11 @@ module OpenHAB
|
|
429
429
|
|
430
430
|
tm.bundleResolver = Mocks::BundleResolver.instance
|
431
431
|
|
432
|
+
require_relative "mocks/safe_caller"
|
433
|
+
field = tm.class.java_class.declared_field :safeCaller
|
434
|
+
field.accessible = true
|
435
|
+
field.set(tm, Mocks::SafeCaller.instance)
|
436
|
+
|
432
437
|
require_relative "mocks/thing_handler"
|
433
438
|
thf = Mocks::ThingHandlerFactory.instance
|
434
439
|
bundle = org.osgi.framework.FrameworkUtil.get_bundle(org.openhab.core.thing.Thing)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openhab-jrubyscripting
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.0.
|
4
|
+
version: 5.0.0.rc4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-11-
|
11
|
+
date: 2022-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -369,6 +369,7 @@ files:
|
|
369
369
|
- lib/openhab/core/provider.rb
|
370
370
|
- lib/openhab/core/registry.rb
|
371
371
|
- lib/openhab/core/rules.rb
|
372
|
+
- lib/openhab/core/rules/module.rb
|
372
373
|
- lib/openhab/core/rules/provider.rb
|
373
374
|
- lib/openhab/core/rules/registry.rb
|
374
375
|
- lib/openhab/core/rules/rule.rb
|
@@ -455,7 +456,6 @@ files:
|
|
455
456
|
- lib/openhab/dsl/rules/triggers/updated.rb
|
456
457
|
- lib/openhab/dsl/rules/triggers/watch/watch.rb
|
457
458
|
- lib/openhab/dsl/rules/triggers/watch/watch_handler.rb
|
458
|
-
- lib/openhab/dsl/script_handling.rb
|
459
459
|
- lib/openhab/dsl/things/builder.rb
|
460
460
|
- lib/openhab/dsl/thread_local.rb
|
461
461
|
- lib/openhab/dsl/timer_manager.rb
|