openhab-scripting 4.13.3 → 4.14.1

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: d8553ce88b82dd93b0b7765705c02bd395d60e73e8fba7d61c4eaac617f7b78c
4
- data.tar.gz: 1a31fb278828c5e2d487baba5836b171ffbc24cb8617c707f3da6afe9acbe526
3
+ metadata.gz: 2e8b2919900c21200e8768fc3c940d0ef58dfba0aa8a48ed1b1864e242f9755c
4
+ data.tar.gz: b51e656ba68e02be1ae3dd7c0d0de0bfdf015de4173702129d23c94e68efe83c
5
5
  SHA512:
6
- metadata.gz: c5bcf4d62caa96ad2160baaef8c05811f0ab423113547e5bab7455553f6e60db45da3ad12312e882eb1627e4e09529acc71b3e9d04e8a2063df17c4717d71a16
7
- data.tar.gz: ccc18e9cabf4e3d4f2f690c15f6bb58690819ff226f7ddc55422779bc33e2b4d08d4434ec33df8dbae3a146ca633bf55118e2569bf99a8a6cdce64801339120d
6
+ metadata.gz: 8506cc8c0ec9ee580525320021c4f9b7525940ecce0ecb402b8366bbebb7df8e2b869ac6661e14e1115047ff4fcabe46ce6d3be2d2870438914822cfa9d6ac15
7
+ data.tar.gz: 267f062e3e87c1b193b4edb80bf2022b6d9748b2aa3398074fc85a844e9e14679564f908d73367e6ec0bce9c1c44fba78b237b678573221223001c59d24a5258
@@ -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
 
@@ -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
  #
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '4.13.3'
8
+ VERSION = '4.14.1'
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.3
4
+ version: 4.14.1
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-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler