openhab-scripting 4.13.2 → 4.14.0

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: 2d2593c004c5de826f8b1d010fd4594e6b32911ad6291b2973f192bf7e7d2383
4
- data.tar.gz: fbd14e4e0a1ae6622a6fa868dc2b5a006cbd2094c22922e36f95743f97683f9a
3
+ metadata.gz: e18ecb6c7855be5621a529eb7a7c35bfdf7afe8ec134a375e4ef0458f77c4edd
4
+ data.tar.gz: 862215cf6988193ec43bbd9a79e8ff16d6a50c91d832346f2d4eb180ba751129
5
5
  SHA512:
6
- metadata.gz: 7035a6b5621606d072680ac7057ef69a1f60a78ea674a4ef5fea16307b8fe6fd2578da0c925b9b2243d84101e9e3505f0a944c69c7f32884ccc0e29d093d7d0a
7
- data.tar.gz: 26758d8a9a8d14754364cbbf1e012e522cbc7d85f9506d7290e21deb675b985c00439ce1bdefacefbd6c43d7904b2a019b243fc9d5c241b62825493659d114d7
6
+ metadata.gz: 21a39ca9ec68afb322cd63fc7c76bd2e8eec26bb8076f0160b3f959465d08060f40516bc9a866251f0c6c1e29a8d2c1b5339645ed6e6726bcf054768e7f262cc
7
+ data.tar.gz: 20af639fd0bdf052e34a6eb73b94e0de96f1cdf31584bd2475a54d23d404354444536b7a5ebda83ea51ae0799486ca91d42e96eafb7e9ad260db487aeced166a
@@ -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
@@ -65,9 +65,9 @@ module OpenHAB
65
65
  end
66
66
 
67
67
  if email
68
- NotificationAction.sendNotification email, msg
68
+ NotificationAction.sendNotification email.to_s, msg.to_s
69
69
  else
70
- NotificationAction.sendBroadcastNotification msg
70
+ NotificationAction.sendBroadcastNotification msg.to_s
71
71
  end
72
72
  end
73
73
 
@@ -83,7 +83,7 @@ module OpenHAB
83
83
  #
84
84
  def say(text, voice: nil, sink: nil, volume: nil)
85
85
  volume = Types::PercentType.new(volume) unless volume.is_a?(Types::PercentType) || volume.nil?
86
- Voice.say text, voice, sink, volume
86
+ Voice.say text.to_s, voice&.to_s, sink&.to_s, volume
87
87
  end
88
88
 
89
89
  #
@@ -97,7 +97,7 @@ module OpenHAB
97
97
  #
98
98
  def play_sound(filename, sink: nil, volume: nil)
99
99
  volume = Types::PercentType.new(volume) unless volume.is_a?(Types::PercentType) || volume.nil?
100
- Audio.playSound sink, filename, volume
100
+ Audio.playSound sink&.to_s, filename.to_s, volume
101
101
  end
102
102
  end
103
103
  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
 
@@ -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
  #
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '4.13.2'
8
+ VERSION = '4.14.0'
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.2
4
+ version: 4.14.0
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-08 00:00:00.000000000 Z
11
+ date: 2021-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler