roku_builder 3.4.4 → 3.5.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
  SHA1:
3
- metadata.gz: b2edf88ef8bebe2d25296ac9df69d5e79f645051
4
- data.tar.gz: bebb326f1be6f127139a7a707a89c748fe455766
3
+ metadata.gz: 01878e8347e002a0414b1bc0d3e21357cf9464ea
4
+ data.tar.gz: 693de68409f67d5c2139d3fa508db5206ae5979a
5
5
  SHA512:
6
- metadata.gz: 670663b481d9f3c7a7a9d3504466b5b10e8ba1f6b8390ad2639345b80e09f1379d02897186d76751450cdb65c8e0e6b2fde55a41d22a8884727b5874dbf92aaa
7
- data.tar.gz: 5aa407111a3c2cd822b9a19205dd55b0635985e29a8ed4c7348fe9a61a7519791c1e8e7cd36a058854e9a9614480e78aa74e8a22e289639df0e325855749b394
6
+ metadata.gz: 63e7b063e4d4e89a916f2a8c6f107a4b6dc3a7eacdb5e9169a9e9a2b9c3d0d98ef729692731449fa6335bda460e3fea294f80ccf21c192b7743bbb981f3bb707
7
+ data.tar.gz: b3f570b04987f9dc83bb8342f953b49d4ce315bb2a2598be25931cf2db7eed40c129ab2d08266b147dede2bccdc859b01ba64844a0a78dc4f07fa10995dfb21b
data/Gemfile.lock CHANGED
@@ -1,17 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- roku_builder (3.4.4)
4
+ roku_builder (3.5.0)
5
5
  faraday (~> 0.9)
6
6
  faraday-digestauth (~> 0.2)
7
7
  git (~> 1.3)
8
8
  net-ping (~> 1.7)
9
+ net-telnet (~> 0.1)
9
10
  rubyzip (~> 1.2)
10
11
 
11
12
  GEM
12
13
  remote: https://rubygems.org/
13
14
  specs:
14
- byebug (8.2.4)
15
+ byebug (9.0.0)
15
16
  coderay (1.1.1)
16
17
  coveralls (0.8.13)
17
18
  json (~> 1.8)
@@ -49,21 +50,23 @@ GEM
49
50
  multi_json (~> 1.8)
50
51
  http_parser.rb (0.6.0)
51
52
  json (1.8.3)
52
- listen (3.0.6)
53
- rb-fsevent (>= 0.9.3)
54
- rb-inotify (>= 0.9.7)
53
+ listen (3.1.4)
54
+ rb-fsevent (~> 0.9, >= 0.9.4)
55
+ rb-inotify (~> 0.9, >= 0.9.7)
56
+ ruby_dep (~> 1.2)
55
57
  lumberjack (1.0.10)
56
58
  method_source (0.8.2)
57
59
  minitest (5.8.4)
58
- minitest-autotest (1.0.2)
60
+ minitest-autotest (1.0.3)
59
61
  minitest-server (~> 1.0)
60
- minitest-server (1.0.3)
62
+ minitest-server (1.0.4)
61
63
  minitest (~> 5.0)
62
- multi_json (1.11.2)
64
+ multi_json (1.12.0)
63
65
  multipart-post (2.0.0)
64
66
  nenv (0.3.0)
65
67
  net-http-digest_auth (1.4)
66
68
  net-ping (1.7.8)
69
+ net-telnet (0.1.1)
67
70
  notiffany (0.0.8)
68
71
  nenv (~> 0.1)
69
72
  shellany (~> 0.0)
@@ -75,6 +78,7 @@ GEM
75
78
  rb-fsevent (0.9.7)
76
79
  rb-inotify (0.9.7)
77
80
  ffi (>= 0.5.0)
81
+ ruby_dep (1.3.1)
78
82
  rubyzip (1.2.0)
79
83
  shellany (0.0.1)
80
84
  simplecov (0.11.2)
@@ -94,7 +98,7 @@ PLATFORMS
94
98
 
95
99
  DEPENDENCIES
96
100
  bundler (~> 1.7)
97
- byebug (~> 8.2)
101
+ byebug (~> 9.0)
98
102
  coveralls (~> 0.8)
99
103
  guard-livereload (~> 2.5)
100
104
  minitest (~> 5.8)
@@ -104,3 +108,6 @@ DEPENDENCIES
104
108
  roku_builder!
105
109
  simplecov (~> 0.11)
106
110
  yard (~> 0.8.7)
111
+
112
+ BUNDLED WITH
113
+ 1.12.3
data/README.md CHANGED
@@ -220,16 +220,21 @@ used as follows:
220
220
 
221
221
  #### Other Tools
222
222
 
223
- You can restart the roku device using the following command:
223
+ You can deeplink into your app using the following command:
224
224
 
225
- $ roku --restart
225
+ $ roku --deeplink-options "a:b c:d"
226
226
 
227
- You can deeplink into your app using the following command:
227
+ or
228
228
 
229
- $ roku --deeplink --mgid <mgid> --content-type <content type>
229
+ $ roku -o "a:b c:d"
230
230
 
231
- This is currently setup to work with one specific app. It will be generalized
232
- in the future.
231
+ This will deeplink into the app sending the keypair values as defined in the
232
+ string. You can also have the app sideloaded first by adding one of the
233
+ source options (--working/-w, --current/-c, --ref/-r, or --stage/-s).
234
+
235
+ You can restart the roku device using the following command:
236
+
237
+ $ roku --restart
233
238
 
234
239
  You can delete the currently sideloaded app using the following command:
235
240
 
@@ -298,6 +303,7 @@ directory:
298
303
  * Intergration Tests
299
304
  * Move RokuBuilder::Controller to RokuBuilder?
300
305
  * Allow start and end delimiter for tests to be configured
306
+ * Fix fgile naming when building from a referance
301
307
 
302
308
  ## Contributing
303
309
 
data/bin/roku CHANGED
@@ -27,8 +27,12 @@ OptionParser.new do |opts|
27
27
  options[:test] = true
28
28
  end
29
29
 
30
- opts.on("-L", "--deeplink", "Command: Deeplink into app. Requires mgid and type options.") do
31
- options[:deeplink] = true
30
+ opts.on("-L", "--deeplink", "Depricated: Deeplink now just requires -o or --deeplink-options") do
31
+ options[:deeplink_depricated] = true
32
+ end
33
+
34
+ opts.on("-o", "--deeplink-options OPTIONS", "Command: Deeplink into app. Define options as keypairs. (eg. a:b, c:d,e:f)") do |o|
35
+ options[:deeplink] = o
32
36
  end
33
37
 
34
38
  opts.on("--configure", "Command: Copy base configuration file to the --config location. Default: '~/.roku_config.json'") do
@@ -104,10 +108,6 @@ OptionParser.new do |opts|
104
108
  options[:inspect] = true
105
109
  end
106
110
 
107
- opts.on("-o", "--deeplink-options TYPE", "Additional deeplink options. (eg. a:b, c:d,e:f)") do |o|
108
- options[:deeplink_options] = o
109
- end
110
-
111
111
  opts.on("-e", "--edit PARAMS", "Edit config params when configuring. (eg. a:b, c:d,e:f)") do |p|
112
112
  options[:edit_params] = p
113
113
  end
data/lib/roku_builder.rb CHANGED
@@ -61,11 +61,14 @@ module RokuBuilder
61
61
  BAD_CURRENT = 5
62
62
 
63
63
  # No deeplink options supplied for deeplink
64
- BAD_DEEPLINK = 6
64
+ # BAD_DEEPLINK = 6
65
65
 
66
66
  # Incorrect use of the in option
67
67
  BAD_IN_FILE = 7
68
68
 
69
+ # An Option is Depricated
70
+ DEPRICATED = 8
71
+
69
72
 
70
73
 
71
74
  ### Device Codes ###
@@ -194,7 +194,7 @@ module RokuBuilder
194
194
  root_dir: configs[:project_config][:directory]
195
195
  }
196
196
  # Create Deeplink Config
197
- configs[:deeplink_config] ={options: options[:deeplink_options]}
197
+ configs[:deeplink_config] ={options: options[:deeplink]}
198
198
  # Create Monitor Config
199
199
  if options[:monitor]
200
200
  configs[:monitor_config] = {type: options[:monitor].to_sym}
@@ -20,7 +20,7 @@ module RokuBuilder
20
20
 
21
21
  # Validate Options
22
22
  options_code = validate_options(options: options)
23
- ErrorHandler.handle_options_codes(options_code: options_code, logger: logger)
23
+ ErrorHandler.handle_options_codes(options_code: options_code, options: options, logger: logger)
24
24
 
25
25
  # Configure Gem
26
26
  configure_code = configure(options: options, logger: logger)
@@ -48,7 +48,8 @@ module RokuBuilder
48
48
  source_result = validate_source_options(options: options)
49
49
  return source_result unless source_result == VALID
50
50
  combination_result = validate_option_combinations(options: options)
51
- return combination_result
51
+ return combination_result unless combination_result == VALID
52
+ return validate_depricated_commands(options: options)
52
53
  end
53
54
  private_class_method :validate_options
54
55
 
@@ -87,13 +88,22 @@ module RokuBuilder
87
88
  if options[:in]
88
89
  return BAD_IN_FILE unless options[:sideload]
89
90
  end
90
- if options[:deeplink]
91
- return BAD_DEEPLINK if options[:deeplink_options].to_s.empty?
92
- end
93
91
  VALID
94
92
  end
95
93
  private_class_method :validate_option_combinations
96
94
 
95
+ # Validate depricated options adn commands
96
+ # @param options [Hash] The Options hash
97
+ # @return [Integer] Status code for command validation
98
+ def self.validate_depricated_commands(options:)
99
+ depricated = options.keys & depricated_options.keys
100
+ if depricated.count > 0
101
+ return DEPRICATED
102
+ end
103
+ VALID
104
+ end
105
+ private_class_method :validate_depricated_commands
106
+
97
107
  # Run commands
98
108
  # @param options [Hash] The options hash
99
109
  # @return [Integer] Return code for options handeling
@@ -103,6 +113,7 @@ module RokuBuilder
103
113
  if ControllerCommands.simple_commands.keys.include?(command)
104
114
  params = ControllerCommands.simple_commands[command]
105
115
  params[:configs] = configs
116
+ params[:logger] = logger
106
117
  ControllerCommands.simple_command(**params)
107
118
  else
108
119
  params = ControllerCommands.method(command.to_s).parameters.collect{|a|a[1]}
@@ -155,12 +166,17 @@ module RokuBuilder
155
166
  end
156
167
  private_class_method :commands
157
168
 
169
+ # List of depricated options
170
+ # @return [Hash] Hash of depricated options and the warning message for each
171
+ def self.depricated_options
172
+ {deeplink_depricated: "-L and --deeplink are depricated. Use -o -r --deeplink-options." }
173
+ end
174
+
158
175
  # List of source options
159
176
  # @return [Array<Symbol>] List of source symbols that can be used in the options hash
160
177
  def self.sources
161
178
  [:ref, :set_stage, :working, :current]
162
179
  end
163
- private_class_method :sources
164
180
 
165
181
  # List of commands requiring a source option
166
182
  # @return [Array<Symbol>] List of command symbols that require a source in the options hash
@@ -8,8 +8,6 @@ module RokuBuilder
8
8
  # @return [Hash] options to run simple commands
9
9
  def self.simple_commands
10
10
  {
11
- deeplink: { klass: Linker, method: :link, config_key: :deeplink_config,
12
- failure: FAILED_DEEPLINKING },
13
11
  delete: { klass: Loader, method: :unload },
14
12
  monitor: { klass: Monitor, method: :monitor,
15
13
  config_key: :monitor_config },
@@ -26,8 +24,10 @@ module RokuBuilder
26
24
  }
27
25
  end
28
26
  # Validate Config
27
+ # @param logger [Logger] system logger
29
28
  # @return [Integer] Success or Failure Code
30
- def self.validate()
29
+ def self.validate(logger:)
30
+ logger.info "Config validated"
31
31
  SUCCESS
32
32
  end
33
33
  # Run Sideload
@@ -46,6 +46,7 @@ module RokuBuilder
46
46
  end
47
47
  stager.unstage
48
48
  return FAILED_SIDELOAD unless success
49
+ logger.info "App Sideloaded; staged using #{stager.method}"
49
50
  SUCCESS
50
51
  end
51
52
  # Run Package
@@ -85,6 +86,7 @@ module RokuBuilder
85
86
  end
86
87
  end
87
88
  stager.unstage
89
+ logger.info "App Packaged; staged using #{stager.method}"
88
90
  SUCCESS
89
91
  end
90
92
  # Run Build
@@ -106,6 +108,7 @@ module RokuBuilder
106
108
  logger.info "Build: #{outfile}"
107
109
  end
108
110
  stager.unstage
111
+ logger.info "App build; staged using #{stager.method}"
109
112
  SUCCESS
110
113
  end
111
114
  # Run update
@@ -124,14 +127,34 @@ module RokuBuilder
124
127
  SUCCESS
125
128
  end
126
129
 
130
+ # Run Deeplink
131
+ # @param options [Hash] user options
132
+ # @param configs [Hash] parsed configs
133
+ # @param logger [Logger] system logger
134
+ def self.deeplink(options:, configs:, logger:)
135
+ sources = options.keys & Controller.sources
136
+ if sources.count > 0
137
+ sideload(options: options, configs: configs, logger:logger)
138
+ end
139
+
140
+ linker = Linker.new(configs[:device_config])
141
+ if linker.link(configs[:deeplink_config])
142
+ logger.info "Deeplinked into app"
143
+ return SUCCESS
144
+ else
145
+ return FAILED_DEEPLINKING
146
+ end
147
+ end
148
+
127
149
  # Run a simple command
128
150
  # @param klass [Class] class of object to create
129
151
  # @param method [Symbol] methog to run on klass
130
152
  # @param config_key [Symbol] config to send from configs if not nil
131
153
  # @param configs [Hash] parsed roku config
132
154
  # @param failure [Integer] failure code to return on failure if not nil
155
+ # @param logger [Logger] system logger
133
156
  # @return [Integer] Success of failure code
134
- def self.simple_command(klass:, method:, config_key: nil, configs:, failure: nil)
157
+ def self.simple_command(klass:, method:, config_key: nil, configs:, failure: nil, logger:)
135
158
  config = configs[:device_config].dup
136
159
  key = klass.to_s.split("::")[-1].underscore.to_sym
137
160
  if configs[:init_params][key]
@@ -144,6 +167,7 @@ module RokuBuilder
144
167
  success = instance.send(method)
145
168
  end
146
169
  return failure unless failure.nil? or success
170
+ logger.info ()
147
171
  SUCCESS
148
172
  end
149
173
  end
@@ -5,7 +5,7 @@ module RokuBuilder
5
5
  # Handle codes returned from validating options
6
6
  # @param options_code [Integer] the error code returned by validate_options
7
7
  # @param logger [Logger] system logger
8
- def self.handle_options_codes(options_code:, logger:)
8
+ def self.handle_options_codes(options_code:, options:, logger:)
9
9
  case options_code
10
10
  when EXTRA_COMMANDS
11
11
  logger.fatal "Only one command is allowed"
@@ -22,12 +22,11 @@ module RokuBuilder
22
22
  when BAD_CURRENT
23
23
  logger.fatal "Can only sideload or build 'current' directory"
24
24
  abort
25
- when BAD_DEEPLINK
26
- logger.fatal "Must supply deeplinking options when deeplinking"
27
- abort
28
25
  when BAD_IN_FILE
29
26
  logger.fatal "Can only supply in file for building"
30
27
  abort
28
+ when DEPRICATED
29
+ print_options_depricateions(options: options, logger: logger)
31
30
  end
32
31
  end
33
32
 
@@ -112,5 +111,16 @@ module RokuBuilder
112
111
  abort
113
112
  end
114
113
  end
114
+
115
+ # Print Options Deprications
116
+ # @param options [Hash] The options hash.
117
+ # @param logger [Logger] system logger
118
+ def self.print_options_depricateions(options:, logger:)
119
+ depricated = Controller.depricated_options.keys & options.keys
120
+ depricated.each do |key|
121
+ logger.warn Controller.depricated_options[key]
122
+ end
123
+ end
124
+ private_class_method :print_options_depricateions
115
125
  end
116
126
  end
@@ -12,6 +12,15 @@ module RokuBuilder
12
12
  @orginal_directory = Dir.pwd
13
13
  end
14
14
 
15
+ # Helper method to get the staging method being used
16
+ # @return [Symbol] staging method being used
17
+ def method
18
+ @method
19
+ end
20
+
21
+
22
+ # Change the stage of the app depending on the method
23
+ # @return [Boolean] whether the staging was successful or not
15
24
  def stage
16
25
  Dir.chdir(@root_dir) unless @root_dir == @orginal_directory
17
26
  case @method
@@ -32,6 +41,8 @@ module RokuBuilder
32
41
  @stage_success
33
42
  end
34
43
 
44
+ # Revert the change that the stage method made
45
+ # @return [Boolean] whether the revert was successful or not
35
46
  def unstage
36
47
  unstage_success = true
37
48
  case @method
@@ -56,6 +67,7 @@ module RokuBuilder
56
67
  private
57
68
 
58
69
  # Switch to the correct branch
70
+ # @param branch [String] the branch to switch to
59
71
  def git_switch_to(branch:)
60
72
  if branch
61
73
  @git ||= Git.open(@root_dir)
@@ -68,6 +80,8 @@ module RokuBuilder
68
80
  end
69
81
 
70
82
  # Switch back to the previous branch
83
+ # @param branch [String] teh branch to switch from
84
+ # @param checkout [Boolean] whether to actually run the checkout command
71
85
  def git_switch_from(branch:, checkout: true)
72
86
  if branch
73
87
  @git ||= Git.open(@root_dir)
@@ -1,4 +1,4 @@
1
1
  module RokuBuilder
2
2
  # Version of the RokuBuilder Gem
3
- VERSION = "3.4.4"
3
+ VERSION = "3.5.0"
4
4
  end
data/roku_builder.gemspec CHANGED
@@ -25,10 +25,11 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency "faraday-digestauth", "~> 0.2"
26
26
  spec.add_dependency "git", "~> 1.3"
27
27
  spec.add_dependency "net-ping", "~> 1.7"
28
+ spec.add_dependency "net-telnet", "~> 0.1"
28
29
 
29
30
  spec.add_development_dependency "bundler", "~> 1.7"
30
31
  spec.add_development_dependency "rake", "~> 11.1"
31
- spec.add_development_dependency "byebug", "~> 8.2"
32
+ spec.add_development_dependency "byebug", "~> 9.0"
32
33
  spec.add_development_dependency "minitest", "~> 5.8"
33
34
  spec.add_development_dependency "minitest-autotest", "~> 1.0"
34
35
  spec.add_development_dependency "minitest-server", "~> 1.0"
@@ -14,6 +14,7 @@ class ControllerCommandsTest < Minitest::Test
14
14
  loader.expect(:sideload, true, [configs[:sideload_config]])
15
15
  stager.expect(:stage, true)
16
16
  stager.expect(:unstage, true)
17
+ stager.expect(:method, :git)
17
18
 
18
19
  RokuBuilder::Loader.stub(:new, loader) do
19
20
  RokuBuilder::Stager.stub(:new, stager) do
@@ -57,6 +58,7 @@ class ControllerCommandsTest < Minitest::Test
57
58
  inspector.expect(:inspect, info, [configs[:inspect_config]])
58
59
  stager.expect(:stage, true)
59
60
  stager.expect(:unstage, true)
61
+ stager.expect(:method, :git)
60
62
 
61
63
  code = nil
62
64
  RokuBuilder::Keyer.stub(:new, keyer) do
@@ -98,6 +100,7 @@ class ControllerCommandsTest < Minitest::Test
98
100
  inspector.expect(:inspect, info, [configs[:inspect_config]])
99
101
  stager.expect(:stage, true)
100
102
  stager.expect(:unstage, true)
103
+ stager.expect(:method, :git)
101
104
 
102
105
  code = nil
103
106
  RokuBuilder::Keyer.stub(:new, keyer) do
@@ -132,6 +135,7 @@ class ControllerCommandsTest < Minitest::Test
132
135
  loader.expect(:build, "/tmp/build", [configs[:build_config]])
133
136
  stager.expect(:stage, true)
134
137
  stager.expect(:unstage, true)
138
+ stager.expect(:method, :git)
135
139
 
136
140
  RokuBuilder::Loader.stub(:new, loader) do
137
141
  RokuBuilder::ManifestManager.stub(:build_version, "1") do
@@ -30,14 +30,10 @@ class ControllerTest < Minitest::Test
30
30
  }
31
31
  assert_equal RokuBuilder::BAD_CURRENT, RokuBuilder::Controller.send(:validate_options, {options: options})
32
32
  options = {
33
- deeplink: true
33
+ deeplink: "a:b c:d",
34
+ deeplink_depricated: true
34
35
  }
35
- assert_equal RokuBuilder::BAD_DEEPLINK, RokuBuilder::Controller.send(:validate_options, {options: options})
36
- options = {
37
- deeplink: true,
38
- deeplink_options: ""
39
- }
40
- assert_equal RokuBuilder::BAD_DEEPLINK, RokuBuilder::Controller.send(:validate_options, {options: options})
36
+ assert_equal RokuBuilder::DEPRICATED, RokuBuilder::Controller.send(:validate_options, {options: options})
41
37
  options = {
42
38
  sideload: true,
43
39
  in: "",
@@ -18,7 +18,6 @@ class ErrorHandlerTest < Minitest::Test
18
18
  RokuBuilder::EXTRA_SOURCES,
19
19
  RokuBuilder::NO_SOURCE,
20
20
  RokuBuilder::BAD_CURRENT,
21
- RokuBuilder::BAD_DEEPLINK,
22
21
  RokuBuilder::BAD_IN_FILE
23
22
  ],
24
23
  configure_code:[
@@ -55,6 +54,9 @@ class ErrorHandlerTest < Minitest::Test
55
54
  warn: {
56
55
  load_code: [
57
56
  RokuBuilder::DEPRICATED_CONFIG
57
+ ],
58
+ options_code: [
59
+ RokuBuilder::DEPRICATED
58
60
  ]
59
61
  }
60
62
  }
@@ -63,7 +65,7 @@ class ErrorHandlerTest < Minitest::Test
63
65
  value.each do |code|
64
66
  logger = Minitest::Mock.new
65
67
  options = {logger: logger}
66
- options[:options] = {} if key == :load_code
68
+ options[:options] = {deeplink_depricated: true} if key == :load_code or key == :options_code
67
69
  options[key] = code
68
70
  logger.expect(type, nil) {|string| string.class == String}
69
71
  method = "handle_#{key}s"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roku_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.4
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - greeneca
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-21 00:00:00.000000000 Z
11
+ date: 2016-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.7'
83
+ - !ruby/object:Gem::Dependency
84
+ name: net-telnet
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.1'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.1'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: bundler
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +128,14 @@ dependencies:
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '8.2'
131
+ version: '9.0'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '8.2'
138
+ version: '9.0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: minitest
127
141
  requirement: !ruby/object:Gem::Requirement