rsmp 0.37.0 → 0.38.0

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.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/devcontainer.json +22 -0
  3. data/.github/workflows/rubocop.yaml +17 -0
  4. data/.gitignore +5 -6
  5. data/.rubocop.yml +80 -0
  6. data/Gemfile +13 -1
  7. data/Gemfile.lock +34 -1
  8. data/Rakefile +3 -3
  9. data/lib/rsmp/cli.rb +147 -124
  10. data/lib/rsmp/collect/ack_collector.rb +8 -7
  11. data/lib/rsmp/collect/aggregated_status_collector.rb +4 -4
  12. data/lib/rsmp/collect/alarm_collector.rb +31 -23
  13. data/lib/rsmp/collect/alarm_matcher.rb +3 -3
  14. data/lib/rsmp/collect/collector/logging.rb +17 -0
  15. data/lib/rsmp/collect/collector/reporting.rb +44 -0
  16. data/lib/rsmp/collect/collector/status.rb +34 -0
  17. data/lib/rsmp/collect/collector.rb +69 -150
  18. data/lib/rsmp/collect/command_matcher.rb +19 -6
  19. data/lib/rsmp/collect/command_response_collector.rb +7 -7
  20. data/lib/rsmp/collect/distributor.rb +14 -11
  21. data/lib/rsmp/collect/filter.rb +31 -15
  22. data/lib/rsmp/collect/matcher.rb +7 -11
  23. data/lib/rsmp/collect/queue.rb +4 -4
  24. data/lib/rsmp/collect/receiver.rb +10 -12
  25. data/lib/rsmp/collect/state_collector.rb +116 -77
  26. data/lib/rsmp/collect/status_collector.rb +6 -6
  27. data/lib/rsmp/collect/status_matcher.rb +17 -7
  28. data/lib/rsmp/{alarm_state.rb → component/alarm_state.rb} +76 -37
  29. data/lib/rsmp/{component.rb → component/component.rb} +15 -15
  30. data/lib/rsmp/component/component_base.rb +89 -0
  31. data/lib/rsmp/component/component_proxy.rb +75 -0
  32. data/lib/rsmp/component/components.rb +63 -0
  33. data/lib/rsmp/convert/export/json_schema.rb +116 -110
  34. data/lib/rsmp/convert/import/yaml.rb +21 -18
  35. data/lib/rsmp/{rsmp.rb → helpers/clock.rb} +5 -6
  36. data/lib/rsmp/{deep_merge.rb → helpers/deep_merge.rb} +2 -1
  37. data/lib/rsmp/helpers/error.rb +71 -0
  38. data/lib/rsmp/{inspect.rb → helpers/inspect.rb} +6 -10
  39. data/lib/rsmp/log/archive.rb +98 -0
  40. data/lib/rsmp/log/colorization.rb +41 -0
  41. data/lib/rsmp/log/filtering.rb +54 -0
  42. data/lib/rsmp/log/logger.rb +206 -0
  43. data/lib/rsmp/{logging.rb → log/logging.rb} +5 -7
  44. data/lib/rsmp/message.rb +159 -148
  45. data/lib/rsmp/{node.rb → node/node.rb} +19 -17
  46. data/lib/rsmp/{protocol.rb → node/protocol.rb} +5 -3
  47. data/lib/rsmp/node/site/site.rb +195 -0
  48. data/lib/rsmp/node/supervisor/modules/configuration.rb +59 -0
  49. data/lib/rsmp/node/supervisor/modules/connection.rb +140 -0
  50. data/lib/rsmp/node/supervisor/modules/sites.rb +64 -0
  51. data/lib/rsmp/node/supervisor/supervisor.rb +72 -0
  52. data/lib/rsmp/{task.rb → node/task.rb} +12 -14
  53. data/lib/rsmp/proxy/modules/acknowledgements.rb +144 -0
  54. data/lib/rsmp/proxy/modules/receive.rb +119 -0
  55. data/lib/rsmp/proxy/modules/send.rb +76 -0
  56. data/lib/rsmp/proxy/modules/state.rb +25 -0
  57. data/lib/rsmp/proxy/modules/tasks.rb +105 -0
  58. data/lib/rsmp/proxy/modules/versions.rb +69 -0
  59. data/lib/rsmp/proxy/modules/watchdogs.rb +66 -0
  60. data/lib/rsmp/proxy/proxy.rb +199 -0
  61. data/lib/rsmp/proxy/site/modules/aggregated_status.rb +52 -0
  62. data/lib/rsmp/proxy/site/modules/alarms.rb +27 -0
  63. data/lib/rsmp/proxy/site/modules/commands.rb +31 -0
  64. data/lib/rsmp/proxy/site/modules/status.rb +110 -0
  65. data/lib/rsmp/proxy/site/site_proxy.rb +205 -0
  66. data/lib/rsmp/proxy/supervisor/modules/aggregated_status.rb +47 -0
  67. data/lib/rsmp/proxy/supervisor/modules/alarms.rb +73 -0
  68. data/lib/rsmp/proxy/supervisor/modules/commands.rb +53 -0
  69. data/lib/rsmp/proxy/supervisor/modules/status.rb +204 -0
  70. data/lib/rsmp/proxy/supervisor/supervisor_proxy.rb +178 -0
  71. data/lib/rsmp/tlc/detector_logic.rb +18 -34
  72. data/lib/rsmp/tlc/input_states.rb +126 -0
  73. data/lib/rsmp/tlc/modules/detector_logics.rb +50 -0
  74. data/lib/rsmp/tlc/modules/display.rb +78 -0
  75. data/lib/rsmp/tlc/modules/helpers.rb +41 -0
  76. data/lib/rsmp/tlc/modules/inputs.rb +173 -0
  77. data/lib/rsmp/tlc/modules/modes.rb +253 -0
  78. data/lib/rsmp/tlc/modules/outputs.rb +30 -0
  79. data/lib/rsmp/tlc/modules/plans.rb +218 -0
  80. data/lib/rsmp/tlc/modules/signal_groups.rb +109 -0
  81. data/lib/rsmp/tlc/modules/startup_sequence.rb +22 -0
  82. data/lib/rsmp/tlc/modules/system.rb +140 -0
  83. data/lib/rsmp/tlc/modules/traffic_data.rb +49 -0
  84. data/lib/rsmp/tlc/signal_group.rb +37 -41
  85. data/lib/rsmp/tlc/signal_plan.rb +14 -11
  86. data/lib/rsmp/tlc/signal_priority.rb +39 -35
  87. data/lib/rsmp/tlc/startup_sequence.rb +59 -0
  88. data/lib/rsmp/tlc/traffic_controller.rb +38 -1010
  89. data/lib/rsmp/tlc/traffic_controller_site.rb +58 -57
  90. data/lib/rsmp/version.rb +1 -1
  91. data/lib/rsmp.rb +82 -48
  92. data/rsmp.gemspec +24 -31
  93. metadata +79 -139
  94. data/lib/rsmp/archive.rb +0 -76
  95. data/lib/rsmp/collect/message_matchers.rb +0 -0
  96. data/lib/rsmp/component_base.rb +0 -87
  97. data/lib/rsmp/component_proxy.rb +0 -57
  98. data/lib/rsmp/components.rb +0 -65
  99. data/lib/rsmp/error.rb +0 -71
  100. data/lib/rsmp/logger.rb +0 -216
  101. data/lib/rsmp/proxy.rb +0 -693
  102. data/lib/rsmp/site.rb +0 -188
  103. data/lib/rsmp/site_proxy.rb +0 -389
  104. data/lib/rsmp/supervisor.rb +0 -302
  105. data/lib/rsmp/supervisor_proxy.rb +0 -510
  106. data/lib/rsmp/tlc/inputs.rb +0 -134
@@ -4,24 +4,24 @@ module RSMP
4
4
  class TrafficControllerSite < Site
5
5
  attr_accessor :main, :signal_plans
6
6
 
7
- def initialize options={}
7
+ def initialize(options = {})
8
8
  # setup options before calling super initializer,
9
9
  # since build of components depend on options
10
10
  @sxl = 'traffic_light_controller'
11
11
  @security_codes = options[:site_settings]['security_codes']
12
- @interval = options[:site_settings].dig('intervals','timer') || 1
12
+ @interval = options[:site_settings].dig('intervals', 'timer') || 1
13
13
  @startup_sequence = options[:site_settings]['startup_sequence'] || 'efg'
14
- build_plans options[:site_settings].dig('signal_plans')
14
+ build_plans options[:site_settings]['signal_plans']
15
15
 
16
- super options
16
+ super
17
17
 
18
- unless main
19
- raise ConfigurationError.new "TLC must have a main component"
20
- end
18
+ return if main
19
+
20
+ raise ConfigurationError, 'TLC must have a main component'
21
21
  end
22
22
 
23
23
  def site_type_name
24
- "TLC"
24
+ 'TLC'
25
25
  end
26
26
 
27
27
  def start
@@ -35,35 +35,36 @@ module RSMP
35
35
  super
36
36
  end
37
37
 
38
- def build_plans signal_plans
38
+ def build_plans(signal_plans)
39
39
  @signal_plans = {}
40
40
  return unless signal_plans
41
- signal_plans.each_pair do |id,settings|
41
+
42
+ signal_plans.each_pair do |id, settings|
42
43
  states = nil
43
- bands = nil
44
44
  cycle_time = settings['cycle_time']
45
45
  states = settings['states'] if settings
46
46
  dynamic_bands = settings['dynamic_bands'] if settings
47
47
 
48
- @signal_plans[id.to_i] = SignalPlan.new(nr: id.to_i, cycle_time: cycle_time, states: states, dynamic_bands: dynamic_bands)
48
+ @signal_plans[id.to_i] =
49
+ SignalPlan.new(number: id.to_i, cycle_time: cycle_time, states: states, dynamic_bands: dynamic_bands)
49
50
  end
50
51
  end
51
52
 
52
- def get_plan group_id, plan_nr
53
+ def get_plan(_group_id, _plan_nr)
53
54
  'NN1BB1'
54
55
  end
55
56
 
56
- def build_component id:, type:, settings:{}
57
- component = case type
57
+ def build_component(id:, type:, settings: {})
58
+ case type
58
59
  when 'main'
59
60
  TrafficController.new node: self,
60
- id: id,
61
- ntsOId: settings['ntsOId'],
62
- xNId: settings['xNId'],
63
- startup_sequence: @startup_sequence,
64
- signal_plans: @signal_plans,
65
- live_output: @site_settings['live_output'],
66
- inputs: @site_settings['inputs']
61
+ id: id,
62
+ ntsoid: settings['ntsOId'],
63
+ xnid: settings['xNId'],
64
+ startup_sequence: @startup_sequence,
65
+ signal_plans: @signal_plans,
66
+ live_output: @site_settings['live_output'],
67
+ inputs: @site_settings['inputs']
67
68
  when 'signal_group'
68
69
  group = SignalGroup.new node: self, id: id
69
70
  main.add_signal_group group
@@ -76,62 +77,62 @@ module RSMP
76
77
  end
77
78
 
78
79
  def start_tlc_timer
79
- task_name = "tlc timer"
80
+ task_name = 'tlc timer'
80
81
  log "Starting #{task_name} with interval #{@interval} seconds", level: :debug
81
82
 
82
83
  @timer = @task.async do |task|
83
- task.annotate task_name
84
+ task.annotate task_name
84
85
  run_tlc_timer task
85
86
  end
86
87
  end
87
88
 
88
- def run_tlc_timer task
89
+ def run_tlc_timer(task)
89
90
  next_time = Time.now.to_f
90
91
  loop do
91
- begin
92
- timer(@clock.now)
93
- rescue StandardError => e
94
- distribute_error e, level: :internal
95
- ensure
96
- # adjust sleep duration to avoid drift. so wake up always happens on the
97
- # same fractional second.
98
- # note that Time.now is not monotonic. If the clock is changed,
99
- # either manaully or via NTP, the sleep interval might jump.
100
- # an alternative is to use ::Process.clock_gettime(::Process::CLOCK_MONOTONIC),
101
- # to get the current time. this ensures a constant interval, but
102
- # if the clock is changed, the wake up would then happen on a different
103
- # fractional second
104
- next_time += @interval
105
- duration = next_time - Time.now.to_f
106
- task.sleep duration
107
- end
92
+ timer(@clock.now)
93
+ rescue StandardError => e
94
+ distribute_error e, level: :internal
95
+ ensure
96
+ # adjust sleep duration to avoid drift. so wake up always happens on the
97
+ # same fractional second.
98
+ # note that Time.now is not monotonic. If the clock is changed,
99
+ # either manaully or via NTP, the sleep interval might jump.
100
+ # an alternative is to use ::Process.clock_gettime(::Process::CLOCK_MONOTONIC),
101
+ # to get the current time. this ensures a constant interval, but
102
+ # if the clock is changed, the wake up would then happen on a different
103
+ # fractional second
104
+ next_time += @interval
105
+ duration = next_time - Time.now.to_f
106
+ task.sleep duration
108
107
  end
109
108
  end
110
109
 
111
110
  def stop_tlc_timer
112
111
  return unless @timer
112
+
113
113
  @timer.stop
114
114
  @timer = nil
115
115
  end
116
116
 
117
- def timer now
117
+ def timer(now)
118
118
  return unless main
119
+
119
120
  main.timer now
120
121
  end
121
122
 
122
- def verify_security_code level, code
123
- raise ArgumentError.new("Level must be 1-2, got #{level}") unless (1..2).include?(level)
124
- if @security_codes[level] != code
125
- raise MessageRejected.new("Wrong security code for level #{level}")
126
- end
123
+ def verify_security_code(level, code)
124
+ raise ArgumentError, "Level must be 1-2, got #{level}" unless (1..2).include?(level)
125
+ return unless @security_codes[level] != code
126
+
127
+ raise MessageRejected, "Wrong security code for level #{level}"
127
128
  end
128
129
 
129
- def change_security_code level, old_code, new_code
130
+ def change_security_code(level, old_code, new_code)
130
131
  verify_security_code level, old_code
131
132
  @security_codes[level] = new_code
132
133
  end
133
134
 
134
- def self.to_rmsp_bool bool
135
+ def self.to_rmsp_bool(bool)
135
136
  if bool
136
137
  'True'
137
138
  else
@@ -139,26 +140,26 @@ module RSMP
139
140
  end
140
141
  end
141
142
 
142
- def self.from_rsmp_bool str
143
+ def self.from_rsmp_bool?(str)
143
144
  str == 'True'
144
145
  end
145
146
 
146
- def self.make_status value, q='recent'
147
+ def self.make_status(value, quality = 'recent')
147
148
  case value
148
149
  when true, false
149
- return to_rmsp_bool(value), q
150
+ [to_rmsp_bool(value), quality]
150
151
  else
151
- return value, q
152
+ [value, quality]
152
153
  end
153
154
  end
154
155
 
155
- def do_deferred key, item=nil
156
+ def do_deferred(key, _item = nil)
156
157
  case key
157
158
  when :restart
158
- log "Restarting TLC", level: :info
159
+ log 'Restarting TLC', level: :info
159
160
  restart
160
161
  end
161
162
  end
162
163
  end
163
164
  end
164
- end
165
+ end
data/lib/rsmp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = "0.37.0"
2
+ VERSION = '0.38.0'.freeze
3
3
  end
data/lib/rsmp.rb CHANGED
@@ -10,52 +10,86 @@ require 'json'
10
10
  require 'securerandom'
11
11
  require 'json_schemer'
12
12
  require 'async/queue'
13
+ require 'rsmp_schema'
13
14
 
14
- require 'rsmp/rsmp'
15
- require 'rsmp/task'
16
- require 'rsmp/deep_merge'
17
- require 'rsmp/inspect'
18
- require 'rsmp/logging'
19
- require 'rsmp/protocol'
20
- require 'rsmp/node'
21
- require 'rsmp/supervisor'
22
- require 'rsmp/components'
23
- require 'rsmp/collect/distributor'
24
- require 'rsmp/collect/receiver'
25
- require 'rsmp/collect/queue'
26
- require 'rsmp/collect/collector'
27
- require 'rsmp/collect/state_collector'
28
- require 'rsmp/collect/filter'
29
- require 'rsmp/collect/matcher'
30
- require 'rsmp/collect/status_matcher'
31
- require 'rsmp/collect/command_matcher'
32
- require 'rsmp/collect/alarm_matcher'
33
- require 'rsmp/collect/status_collector'
34
- require 'rsmp/collect/command_response_collector'
35
- require 'rsmp/collect/aggregated_status_collector'
36
- require 'rsmp/collect/alarm_collector'
37
- require 'rsmp/collect/ack_collector'
38
- require 'rsmp/alarm_state'
39
- require 'rsmp/component_base'
40
- require 'rsmp/component'
41
- require 'rsmp/component_proxy'
42
- require 'rsmp/site'
43
- require 'rsmp/proxy'
44
- require 'rsmp/supervisor_proxy'
45
- require 'rsmp/site_proxy'
46
- require 'rsmp/error'
47
- require 'rsmp/message'
48
- require 'rsmp/logger'
49
- require 'rsmp/archive'
50
- require 'rsmp/tlc/traffic_controller_site'
51
- require 'rsmp/tlc/traffic_controller'
52
- require 'rsmp/tlc/detector_logic'
53
- require 'rsmp/tlc/signal_group'
54
- require 'rsmp/tlc/signal_plan'
55
- require 'rsmp/tlc/inputs'
56
- require 'rsmp/tlc/signal_priority'
57
-
58
- require 'rsmp/convert/import/yaml'
59
- require 'rsmp/convert/export/json_schema'
60
-
61
- require 'rsmp/version'
15
+ require_relative 'rsmp/helpers/clock'
16
+ require_relative 'rsmp/helpers/deep_merge'
17
+ require_relative 'rsmp/helpers/error'
18
+ require_relative 'rsmp/helpers/inspect'
19
+ require_relative 'rsmp/log/logging'
20
+ require_relative 'rsmp/log/archive'
21
+ require_relative 'rsmp/log/filtering'
22
+ require_relative 'rsmp/log/colorization'
23
+ require_relative 'rsmp/log/logger'
24
+ require_relative 'rsmp/message'
25
+ require_relative 'rsmp/component/components'
26
+ require_relative 'rsmp/component/alarm_state'
27
+ require_relative 'rsmp/component/component_base'
28
+ require_relative 'rsmp/component/component'
29
+ require_relative 'rsmp/component/component_proxy'
30
+ require_relative 'rsmp/collect/distributor'
31
+ require_relative 'rsmp/collect/receiver'
32
+ require_relative 'rsmp/collect/queue'
33
+ require_relative 'rsmp/collect/collector/status'
34
+ require_relative 'rsmp/collect/collector/reporting'
35
+ require_relative 'rsmp/collect/collector/logging'
36
+ require_relative 'rsmp/collect/collector'
37
+ require_relative 'rsmp/collect/state_collector'
38
+ require_relative 'rsmp/collect/filter'
39
+ require_relative 'rsmp/collect/matcher'
40
+ require_relative 'rsmp/collect/status_matcher'
41
+ require_relative 'rsmp/collect/command_matcher'
42
+ require_relative 'rsmp/collect/alarm_matcher'
43
+ require_relative 'rsmp/collect/status_collector'
44
+ require_relative 'rsmp/collect/command_response_collector'
45
+ require_relative 'rsmp/collect/aggregated_status_collector'
46
+ require_relative 'rsmp/collect/alarm_collector'
47
+ require_relative 'rsmp/collect/ack_collector'
48
+ require_relative 'rsmp/node/protocol'
49
+ require_relative 'rsmp/node/task'
50
+ require_relative 'rsmp/node/node'
51
+ require_relative 'rsmp/node/site/site'
52
+ require_relative 'rsmp/node/supervisor/modules/configuration'
53
+ require_relative 'rsmp/node/supervisor/modules/connection'
54
+ require_relative 'rsmp/node/supervisor/modules/sites'
55
+ require_relative 'rsmp/node/supervisor/supervisor'
56
+ require_relative 'rsmp/proxy/modules/state'
57
+ require_relative 'rsmp/proxy/modules/watchdogs'
58
+ require_relative 'rsmp/proxy/modules/acknowledgements'
59
+ require_relative 'rsmp/proxy/modules/send'
60
+ require_relative 'rsmp/proxy/modules/receive'
61
+ require_relative 'rsmp/proxy/modules/versions'
62
+ require_relative 'rsmp/proxy/modules/tasks'
63
+ require_relative 'rsmp/proxy/proxy'
64
+ require_relative 'rsmp/proxy/supervisor/modules/status'
65
+ require_relative 'rsmp/proxy/supervisor/modules/commands'
66
+ require_relative 'rsmp/proxy/supervisor/modules/alarms'
67
+ require_relative 'rsmp/proxy/supervisor/modules/aggregated_status'
68
+ require_relative 'rsmp/proxy/supervisor/supervisor_proxy'
69
+ require_relative 'rsmp/proxy/site/modules/status'
70
+ require_relative 'rsmp/proxy/site/modules/aggregated_status'
71
+ require_relative 'rsmp/proxy/site/modules/alarms'
72
+ require_relative 'rsmp/proxy/site/modules/commands'
73
+ require_relative 'rsmp/proxy/site/site_proxy'
74
+ require_relative 'rsmp/tlc/modules/system'
75
+ require_relative 'rsmp/tlc/modules/modes'
76
+ require_relative 'rsmp/tlc/modules/plans'
77
+ require_relative 'rsmp/tlc/modules/signal_groups'
78
+ require_relative 'rsmp/tlc/modules/inputs'
79
+ require_relative 'rsmp/tlc/modules/outputs'
80
+ require_relative 'rsmp/tlc/modules/detector_logics'
81
+ require_relative 'rsmp/tlc/modules/traffic_data'
82
+ require_relative 'rsmp/tlc/modules/startup_sequence'
83
+ require_relative 'rsmp/tlc/modules/display'
84
+ require_relative 'rsmp/tlc/modules/helpers'
85
+ require_relative 'rsmp/tlc/startup_sequence'
86
+ require_relative 'rsmp/tlc/traffic_controller_site'
87
+ require_relative 'rsmp/tlc/traffic_controller'
88
+ require_relative 'rsmp/tlc/detector_logic'
89
+ require_relative 'rsmp/tlc/signal_group'
90
+ require_relative 'rsmp/tlc/signal_plan'
91
+ require_relative 'rsmp/tlc/input_states'
92
+ require_relative 'rsmp/tlc/signal_priority'
93
+ require_relative 'rsmp/convert/import/yaml'
94
+ require_relative 'rsmp/convert/export/json_schema'
95
+ require_relative 'rsmp/version'
data/rsmp.gemspec CHANGED
@@ -1,48 +1,41 @@
1
- lib = File.expand_path("lib", __dir__)
1
+ lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "rsmp/version"
3
+ require 'rsmp/version'
4
4
  require 'pathname'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "rsmp"
7
+ spec.name = 'rsmp'
8
8
  spec.version = RSMP::VERSION
9
- spec.authors = ["Emil Tin"]
10
- spec.email = ["zf0f@kk.dk"]
9
+ spec.authors = ['Emil Tin']
10
+ spec.email = ['zf0f@kk.dk']
11
11
 
12
- spec.summary = %q{RoadSide Message Protocol (RSMP) library.}
13
- spec.description = %q{Easy RSMP site and supervisor communication.}
14
- spec.homepage = "https://github.com/rsmp-nordic/rsmp"
12
+ spec.summary = 'RoadSide Message Protocol (RSMP) library.'
13
+ spec.description = 'Easy RSMP site and supervisor communication.'
14
+ spec.homepage = 'https://github.com/rsmp-nordic/rsmp'
15
15
  spec.licenses = ['MIT']
16
- spec.required_ruby_version = '>= 3.2.0'
16
+ spec.required_ruby_version = '>= 3.4.0'
17
17
 
18
- spec.metadata["homepage_uri"] = spec.homepage
19
- spec.metadata["source_code_uri"] = "https://github.com/rsmp-nordic/rsmp"
20
- spec.metadata["changelog_uri"] = "https://github.com/rsmp-nordic/rsmp/blob/master/CHANGELOG.md"
21
- spec.metadata["bug_tracker_uri"] = "https://github.com/rsmp-nordic/rsmp/issues"
18
+ spec.metadata['homepage_uri'] = spec.homepage
19
+ spec.metadata['source_code_uri'] = 'https://github.com/rsmp-nordic/rsmp'
20
+ spec.metadata['changelog_uri'] = 'https://github.com/rsmp-nordic/rsmp/blob/master/CHANGELOG.md'
21
+ spec.metadata['bug_tracker_uri'] = 'https://github.com/rsmp-nordic/rsmp/issues'
22
+ spec.metadata['rubygems_mfa_required'] = 'true'
22
23
 
23
24
  # Specify which files should be added to the gem when it is released.
24
25
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
26
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
27
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
28
  end
28
29
 
29
- spec.bindir = "exe"
30
+ spec.bindir = 'exe'
30
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
- spec.require_paths = ["lib"]
32
+ spec.require_paths = ['lib']
32
33
 
33
- spec.add_dependency "logger", "~> 1.6"
34
- spec.add_dependency "ostruct", "~> 0.6"
35
- spec.add_dependency "async", "~> 2.32"
36
- spec.add_dependency "io-stream", "~> 0.10"
37
- spec.add_dependency "io-endpoint", "~> 0.15"
38
- spec.add_dependency "colorize", "~> 1.1"
39
- spec.add_dependency "rsmp_schema", "~> 0.8"
40
-
41
- spec.add_development_dependency "bundler", "~> 2.6"
42
- spec.add_development_dependency "rake", "~> 13.2"
43
- spec.add_development_dependency "rspec", "~> 3.13"
44
- spec.add_development_dependency "rspec-expectations", "~> 3.13"
45
- spec.add_development_dependency "timecop", "~> 0.9"
46
- spec.add_development_dependency "cucumber", "~> 9.2"
47
- spec.add_development_dependency "aruba" , "~> 2.3"
34
+ spec.add_dependency 'async', '~> 2.32'
35
+ spec.add_dependency 'colorize', '~> 1.1'
36
+ spec.add_dependency 'io-endpoint', '~> 0.15'
37
+ spec.add_dependency 'io-stream', '~> 0.10'
38
+ spec.add_dependency 'logger', '~> 1.6'
39
+ spec.add_dependency 'ostruct', '~> 0.6'
40
+ spec.add_dependency 'rsmp_schema', '~> 0.8'
48
41
  end