openhab-scripting 4.13.4 → 4.14.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e794d663e6db42e9255f01cbdbae515562726ac8d6a27aebaf7210722a5811f2
4
- data.tar.gz: 9ebdbe785492a7b9aabbc72a4b3fbf2f0a6396d9697d0422f292f99c71287ee0
3
+ metadata.gz: a67cb8047adba1af368a416f5a40d624ec84657f62ad420c1388e8f9cd04d9a7
4
+ data.tar.gz: bc6455b6a27d5efc447fd004a9f6503ead46ae40480d93aaa3a22288288cbb0a
5
5
  SHA512:
6
- metadata.gz: 477e6446f83833e511d4219d40b31e2ed52110500a0b45ef31a7184e61d30e645056e4dd55b019536f63c89a23d47e64433fef736a0fc5228653598a6f62f50d
7
- data.tar.gz: 601498e0008cd0b85c73cdecda6d96cf3250253931d912634bbfdb1139a7db8344f1a011ffa4a9fcfdd375cf529c3348731af315f0aa1b24118eb47b51b0fe13
6
+ metadata.gz: 78c076b90ba8a174019ac814172f377aa49c0e21339e35040220da6df66ebff1ad4edde36202c9d65ffd4d8e65e08ab73fc3802589685f7f40a84199699adc59
7
+ data.tar.gz: 8903933c828cfcd21f8c41d3524529e2e0cf96b5f4d307af8591dc36379774bba16c827ae5e5cd0258c953bffc2ec356c536467855b108e4f9f0a4de9fc54ce7
@@ -1,39 +1,76 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'openhab/log/logger'
4
- require 'openhab/dsl/rules/rule'
5
- require 'openhab/dsl/timers'
6
4
 
7
5
  # OpenHAB main module
8
6
  module OpenHAB
9
7
  module Core
10
8
  #
11
- # Manages script loading and unloading
9
+ # Provide callback mechanisms for script handling
12
10
  #
13
11
  module ScriptHandling
12
+ module_function
13
+
14
+ # Add a callback to be run when the script has been fully loaded
15
+ def script_loaded(&block)
16
+ ScriptHandlingCallbacks.script_loaded_hooks << block
17
+ end
18
+
19
+ # Add a callback to be run when the script is unloaded
20
+ def script_unloaded(&block)
21
+ ScriptHandlingCallbacks.script_unloaded_hooks << block
22
+ end
23
+ end
24
+
25
+ #
26
+ # Manages script loading and unloading
27
+ #
28
+ module ScriptHandlingCallbacks
14
29
  include OpenHAB::Log
15
30
 
31
+ class << self
32
+ #
33
+ # Return script_loaded_hooks
34
+ #
35
+ # @!visibility private
36
+ def script_loaded_hooks
37
+ @script_loaded_hooks ||= []
38
+ end
39
+
40
+ #
41
+ # Return script_unloaded_hooks
42
+ #
43
+ # @!visibility private
44
+ def script_unloaded_hooks
45
+ @script_unloaded_hooks ||= []
46
+ end
47
+ end
48
+
16
49
  #
17
50
  # Executed when OpenHAB unloads a script file
18
51
  #
19
- # rubocop:disable Naming/MethodName
20
- # method name dictacted by OpenHAB
21
- def scriptUnloaded
52
+ # @!visibility private
53
+ def scriptUnloaded # rubocop:disable Naming/MethodName method name dictated by OpenHAB
22
54
  logger.trace('Script unloaded')
23
- OpenHAB::DSL::Rules.cleanup_rules
24
- OpenHAB::DSL::Timers.cancel_all
55
+ ScriptHandlingCallbacks.script_unloaded_hooks.each do |hook|
56
+ hook.call
57
+ rescue StandardError => e
58
+ logger.error("Failed to call script_unloaded hook #{hook}: #{e}")
59
+ end
25
60
  end
26
- # rubocop:enable Naming/MethodName
27
61
 
28
62
  #
29
63
  # Executed when OpenHAB loads a script file
30
64
  #
31
- # rubocop:disable Naming/MethodName
32
- # method name dictacted by OpenHAB
33
- def scriptLoaded(filename)
65
+ # @!visibility private
66
+ def scriptLoaded(filename) # rubocop:disable Naming/MethodName method name dictated by OpenHAB
34
67
  logger.trace("Script loaded: #{filename}")
68
+ ScriptHandlingCallbacks.script_loaded_hooks.each do |hook|
69
+ hook.call
70
+ rescue StandardError => e
71
+ logger.error("Failed to call script_loaded hook #{hook}: #{e}")
72
+ end
35
73
  end
36
- # rubocop:enable Naming/MethodName
37
74
  end
38
75
  end
39
76
  end
@@ -62,6 +62,7 @@ module OpenHAB
62
62
  def self.cleanup_rules
63
63
  @script_rules.each(&:cleanup)
64
64
  end
65
+ Core::ScriptHandling.script_unloaded { cleanup_rules }
65
66
 
66
67
  private
67
68
 
@@ -24,8 +24,6 @@ module OpenHAB
24
24
  include OpenHAB::Log
25
25
  extend Forwardable
26
26
 
27
- def_delegator :@timer, :is_active, :active?
28
- def_delegator :@timer, :is_running, :running?
29
27
  def_delegator :@timer, :has_terminated, :terminated?
30
28
 
31
29
  #
@@ -47,6 +47,7 @@ module OpenHAB
47
47
  def self.cancel_all
48
48
  @timer_manager.cancel_all
49
49
  end
50
+ Core::ScriptHandling.script_unloaded { cancel_all }
50
51
 
51
52
  # Create or reschedule a reentrant time
52
53
  #
@@ -27,7 +27,7 @@ module OpenHAB
27
27
  #
28
28
  def coerce(other)
29
29
  logger.trace("Coercing #{self} (#{self.class}) as a request from #{other.class}")
30
- return [other.as(self.class), self] if other.is_a?(Type)
30
+ return [other.as(self.class), self] if other.is_a?(Type) && other.respond_to?(:as)
31
31
  end
32
32
 
33
33
  #
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '4.13.4'
8
+ VERSION = '4.14.2'
9
9
  end
data/lib/openhab.rb CHANGED
@@ -20,6 +20,7 @@ module OpenHAB
20
20
  #
21
21
  #
22
22
  # Number of extensions and includes requires more lines
23
+ # rubocop: disable Metrics/MethodLength
23
24
  def self.extended(base)
24
25
  OpenHAB::Core.wait_till_openhab_ready
25
26
  base.extend Log
@@ -28,12 +29,14 @@ module OpenHAB
28
29
  base.extend OpenHAB::DSL
29
30
  base.extend OpenHAB::DSL::Between
30
31
 
32
+ base.send :include, OpenHAB::Core::ScriptHandlingCallbacks
31
33
  base.send :include, OpenHAB::DSL::Items
32
34
  base.send :include, OpenHAB::DSL::Types
33
35
  logger.info "OpenHAB JRuby Scripting Library Version #{OpenHAB::VERSION} Loaded"
34
36
 
35
37
  OpenHAB::Core.add_rubylib_to_load_path
36
38
  end
39
+ # rubocop: enable Metrics/MethodLength
37
40
  end
38
41
 
39
42
  # Extend caller with OpenHAB methods
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openhab-scripting
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.13.4
4
+ version: 4.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian O'Connell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-10 00:00:00.000000000 Z
11
+ date: 2021-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler