roku_builder 3.4.4 → 3.5.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.
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