roku_builder 3.12.2 → 3.12.4

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: 2fb178e01cea210f0293002bfda3f18dfa08c525
4
- data.tar.gz: e18dfb21ea5fb2d3c4fdb646b50446a4adc3ed08
3
+ metadata.gz: a6465e57b5cb5dad5fb1606d51f9469d6334c39a
4
+ data.tar.gz: 8e0fbdbef24e1dd4d283b82a54313a8e6605aac8
5
5
  SHA512:
6
- metadata.gz: f5115c01940757881bf4a18ddbecae18fb6da21e727d698be7defad2ab4fd73f76c14e5fa88bc7f8580958aa9cec707cb0a6b35d188690b362c9fd47d15d23ea
7
- data.tar.gz: cecd6468a8e1b2e2c5b386555370175191d977b1141180373643911b769563d2b97c4c77269f65fbaca92ac224e3ddd50d5a7ab97da5eb0263539e28bbe347e1
6
+ metadata.gz: c3c26fb3b92fa5e9ef0e5655049a68aa3811f22a8807bb76087d70f355f299be662356340512deca359b0fdd04208ed6d9f7c495e729811ceb56dc3fa276a3dc
7
+ data.tar.gz: 1ed8966ed21dec4b74eccd1236649c375336977b8d422d35296059157bb4bb3adcb2d785018faac535d06f41fc855d3af2975c0dba95ad972e90e5d2de699a64
data/CHANGELOG CHANGED
@@ -1,3 +1,12 @@
1
+ = 3.12.4 =
2
+
3
+ - Add regexp option for filtering monitor logs
4
+
5
+ = 3.12.3 =
6
+
7
+ - Fix Monitor draw order on commands
8
+ - Dependancies update
9
+
1
10
  = 3.12.2 =
2
11
 
3
12
  - Fix bug with monitor not exiting
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- roku_builder (3.12.2)
4
+ roku_builder (3.12.4)
5
5
  faraday (~> 0.11)
6
6
  faraday-digestauth (~> 0.2)
7
7
  git (~> 1.3)
@@ -30,7 +30,7 @@ GEM
30
30
  ffi (1.9.17)
31
31
  formatador (0.2.5)
32
32
  git (1.3.0)
33
- guard (2.14.0)
33
+ guard (2.14.1)
34
34
  formatador (>= 0.2.4)
35
35
  listen (>= 2.7, < 4.0)
36
36
  lumberjack (~> 1.0)
@@ -49,6 +49,9 @@ GEM
49
49
  rb-inotify (~> 0.9, >= 0.9.7)
50
50
  ruby_dep (~> 1.2)
51
51
  lumberjack (1.0.11)
52
+ m (1.5.0)
53
+ method_source (>= 0.6.7)
54
+ rake (>= 0.9.2.2)
52
55
  method_source (0.8.2)
53
56
  mini_portile2 (2.1.0)
54
57
  minitest (5.10.1)
@@ -58,7 +61,7 @@ GEM
58
61
  minitest (~> 5.0)
59
62
  multipart-post (2.0.0)
60
63
  nenv (0.3.0)
61
- net-http-digest_auth (1.4)
64
+ net-http-digest_auth (1.4.1)
62
65
  net-ping (2.0.1)
63
66
  net-telnet (0.1.1)
64
67
  nokogiri (1.7.0.1)
@@ -75,7 +78,7 @@ GEM
75
78
  rb-inotify (0.9.8)
76
79
  ffi (>= 0.5.0)
77
80
  ruby_dep (1.5.0)
78
- rubyzip (1.2.0)
81
+ rubyzip (1.2.1)
79
82
  shellany (0.0.1)
80
83
  simplecov (0.12.0)
81
84
  docile (~> 1.1.0)
@@ -86,7 +89,7 @@ GEM
86
89
  term-ansicolor (1.4.0)
87
90
  tins (~> 1.0)
88
91
  thor (0.19.4)
89
- tins (1.13.0)
92
+ tins (1.13.2)
90
93
  yard (0.9.8)
91
94
 
92
95
  PLATFORMS
@@ -98,6 +101,7 @@ DEPENDENCIES
98
101
  coveralls (~> 0.8)
99
102
  guard (~> 2.14)
100
103
  guard-minitest (~> 2.4)
104
+ m (~> 1.5)
101
105
  minitest (~> 5.10)
102
106
  minitest-autotest (~> 1.0)
103
107
  minitest-server (~> 1.0)
data/bin/roku CHANGED
@@ -170,6 +170,10 @@ parser = OptionParser.new do |opts|
170
170
  options[:in] = i
171
171
  end
172
172
 
173
+ opts.on("-r", "--regexp REGEXP", "A regular expression used to filter monitor logs") do |r|
174
+ options[:regexp] = r
175
+ end
176
+
173
177
  opts.on("-x", "--exclude", "Apply exclude config to sideload") do
174
178
  options[:exclude] = true
175
179
  end
@@ -46,18 +46,8 @@ module RokuBuilder
46
46
  # @return [Hash] roku config object
47
47
  def self.get_config(config:, logger:)
48
48
  begin
49
- config = {parent_config: config}
50
- depth = 1
51
- while config[:parent_config]
52
- config_parent = JSON.parse(File.open(config[:parent_config]).read, {symbolize_names: true})
53
- config.delete(:parent_config)
54
- config.merge!(config_parent) {|key, v1, v2| v1}
55
- depth += 1
56
- if depth > 10
57
- logger.fatal "Parent configs too deep."
58
- return nil
59
- end
60
- end
49
+ config = build_config(config: config, logger: logger)
50
+ return nil unless config
61
51
  config[:devices][:default] = config[:devices][:default].to_sym
62
52
  config[:projects][:default] = config[:projects][:default].to_sym
63
53
  config[:projects].each_pair do |key,value|
@@ -83,6 +73,22 @@ module RokuBuilder
83
73
  end
84
74
  end
85
75
 
76
+ def self.build_config(config:, logger:)
77
+ config = {parent_config: config}
78
+ depth = 1
79
+ while config[:parent_config]
80
+ config_parent = JSON.parse(File.open(config[:parent_config]).read, {symbolize_names: true})
81
+ config.delete(:parent_config)
82
+ config.merge!(config_parent) {|_key, v1, _v2| v1}
83
+ depth += 1
84
+ if depth > 10
85
+ logger.fatal "Parent configs too deep."
86
+ return nil
87
+ end
88
+ end
89
+ config
90
+ end
91
+
86
92
 
87
93
  # Edit the roku config
88
94
  # @param config [String] path for the roku config
@@ -227,6 +227,9 @@ module RokuBuilder
227
227
  # Create Monitor Config
228
228
  if options[:monitor]
229
229
  configs[:monitor_config] = {type: options[:monitor].to_sym}
230
+ if options[:regexp]
231
+ configs[:monitor_config][:regexp] = /#{options[:regexp]}/
232
+ end
230
233
  end
231
234
  # Create Navigate Config
232
235
  mappings = {}
@@ -36,28 +36,21 @@ module RokuBuilder
36
36
  def self.validate_config(config:)
37
37
  codes = []
38
38
  validate_structure(codes: codes, config: config)
39
- if config[:devices]
40
- config[:devices].each {|device, device_config|
41
- next if device == :default
42
- validate_device(codes: codes, device: device_config)
43
- }
44
- end
45
- if config[:projects]
46
- config[:projects].each {|project,project_config|
47
- next if project == :default or project == :project_dir
48
- validate_project(codes: codes, project: project_config)
49
- if project_config[:stages]
50
- project_config[:stages].each {|_stage, stage_config|
51
- validate_stage(codes: codes, stage: stage_config, project: project_config, config: config)
52
- }
39
+ [:projects, :devices, :keys].each do |type|
40
+ if config[type]
41
+ config[type].each do |key, value|
42
+ next if [:default, :key_dir, :project_dir].include?(key)
43
+ method = "validate_#{type.to_s[0..-2]}".to_sym
44
+ attrs = {codes: codes}
45
+ attrs[type.to_s[0..-2].to_sym] = value
46
+ send(method, attrs)
47
+ if value[:stages]
48
+ value[:stages].each {|_stage, stage_config|
49
+ validate_stage(codes: codes, stage: stage_config, project: value, config: config)
50
+ }
51
+ end
53
52
  end
54
- }
55
- end
56
- if config[:keys]
57
- config[:keys].each {|key,key_config|
58
- next if key == :key_dir
59
- validate_key(codes: codes, key: key_config)
60
- }
53
+ end
61
54
  end
62
55
  if config[:input_mapping]
63
56
  config[:input_mapping].each_value {|info| validate_mapping(codes: codes, mapping: info) }
@@ -21,7 +21,8 @@ module RokuBuilder
21
21
 
22
22
  # Monitor a development log on the Roku device
23
23
  # @param type [Symbol] The log type to monitor
24
- def monitor(type:)
24
+ # @param regexp [Regexp] regular expression to filter text on
25
+ def monitor(type:, regexp: nil)
25
26
  telnet_config = { 'Host' => @roku_ip_address, 'Port' => @ports[type] }
26
27
  waitfor_config = { 'Match' => /./, 'Timeout' => false }
27
28
 
@@ -32,7 +33,7 @@ module RokuBuilder
32
33
  all_text = ""
33
34
  while true
34
35
  connection.waitfor(waitfor) do |txt|
35
- all_text = manage_text(all_text: all_text, txt: txt)
36
+ all_text = manage_text(all_text: all_text, txt: txt, regexp: regexp)
36
37
  end
37
38
  end
38
39
  }
@@ -87,6 +88,7 @@ module RokuBuilder
87
88
  running = false
88
89
  else
89
90
  thread[:connection].puts(command)
91
+ sleep(0.1)
90
92
  end
91
93
  rescue SystemExit, Interrupt
92
94
  thread[:connection].puts("\C-c")
@@ -97,11 +99,14 @@ module RokuBuilder
97
99
  # Handle text from telnet
98
100
  # @param all_text [String] remaining partial line text
99
101
  # @param txt [String] current string from telnet
102
+ # @param regexp [Regexp] regular expression to filter text on
100
103
  # @return [String] remaining partial line text
101
- def manage_text(all_text:, txt:)
104
+ def manage_text(all_text:, txt:, regexp: nil)
102
105
  all_text += txt
103
106
  while line = all_text.slice!(/^.*\n/) do
104
- puts line if !line.strip.empty?
107
+ if !line.strip.empty?
108
+ puts line if regexp.nil? or regexp.match(line)
109
+ end
105
110
  end
106
111
 
107
112
  if all_text.downcase == "BrightScript Debugger> ".downcase
@@ -2,5 +2,5 @@
2
2
 
3
3
  module RokuBuilder
4
4
  # Version of the RokuBuilder Gem
5
- VERSION = "3.12.2"
5
+ VERSION = "3.12.4"
6
6
  end
data/roku_builder.gemspec CHANGED
@@ -39,4 +39,5 @@ Gem::Specification.new do |spec|
39
39
  spec.add_development_dependency "yard", "~> 0.9"
40
40
  spec.add_development_dependency "guard", "~> 2.14"
41
41
  spec.add_development_dependency "guard-minitest", "~> 2.4"
42
+ spec.add_development_dependency "m", "~> 1.5"
42
43
  end
@@ -195,6 +195,17 @@ class ConfigParserTest < Minitest::Test
195
195
  RokuBuilder::ConfigParser.send(:setup_simple_configs, **args)
196
196
  end
197
197
 
198
+ def test_monitor_config
199
+ args = {
200
+ config: {},
201
+ configs: {project_config: {directory: "dir"}, init_params: {}, out: {}},
202
+ options: {monitor: "main", regexp: "^A$"},
203
+ }
204
+ RokuBuilder::ConfigParser.send(:setup_active_configs, **args)
205
+ refute_nil args[:configs][:monitor_config][:regexp]
206
+ assert args[:configs][:monitor_config][:regexp].match("A")
207
+ end
208
+
198
209
  def test_outfile_config
199
210
  configs = {}
200
211
  args = {
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.12.2
4
+ version: 3.12.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - greeneca
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-07 00:00:00.000000000 Z
11
+ date: 2017-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -262,6 +262,20 @@ dependencies:
262
262
  - - "~>"
263
263
  - !ruby/object:Gem::Version
264
264
  version: '2.4'
265
+ - !ruby/object:Gem::Dependency
266
+ name: m
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - "~>"
270
+ - !ruby/object:Gem::Version
271
+ version: '1.5'
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - "~>"
277
+ - !ruby/object:Gem::Version
278
+ version: '1.5'
265
279
  description: Allows the user to easily sideload, package, deeplink, test, roku apps.
266
280
  email:
267
281
  - charles.greene@redspace.com