roku_builder 4.21.3 → 4.22.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: 6a91edfcf033f846e9d9e1e3f0fc37afe4cfc3c58ec4b2062275dbfd683744fb
4
- data.tar.gz: bc90febc52b08f211ef0d48346a4652798a433b2532af98d801d41cf505e2989
3
+ metadata.gz: 4e254e28ba3fddc22a7578a793813f98038f8f6436c44f909900ea71028f233e
4
+ data.tar.gz: 40b2d0b27529a797a34b567354a859d870d496e3fe63b17612c5af1d38342347
5
5
  SHA512:
6
- metadata.gz: a77a6044775302eca3b344497cfe2815d3b550dad7d289c629d04e0c2193bf4d4c6563ec9b28a4158712fdbbef8e354ca48747266499fdd5e9fd6028f3a63a59
7
- data.tar.gz: 741fee309f4e65e99757b1ddfb964f39f1a9391b56abd1f42d09507c1255ef040bd8ae990e821edf4b0453870065c11cfa6c99f60c9f48eabcae0a2b53904ab4
6
+ metadata.gz: 15a804bfc305022817923fcd6dcb643a2d6d080a8d39d1697ceb51f559669d443255d82c9d187cf17603b7a4083d430612870b70de8e42c052c0a3ec0999ca49
7
+ data.tar.gz: 36bef8ba56d9a908ea4e01e6202f7f5d5b734321cf4b640f52c3c1e129b1e1b85067359a5a8e353932f6c51298a7296a02e18a2094c835581dca20b8a5efb2a5
data/.travis.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "2.4.1"
3
+ - "2.6.0"
4
4
  before_install:
5
5
  - gem install bundler
data/lib/roku_builder.rb CHANGED
@@ -200,7 +200,7 @@ module RokuBuilder
200
200
  stager.stage
201
201
  end
202
202
  instance = plugin.new(config: @@config)
203
- instance.send(@@options.command, {options: @@options})
203
+ instance.send(@@options.command, **{options: @@options})
204
204
  stager.unstage if stager
205
205
  end
206
206
  end
@@ -224,7 +224,7 @@ module RokuBuilder
224
224
  def self.process_hook(hook:, params:)
225
225
  @@plugins.each do |plugin|
226
226
  if plugin.respond_to?("#{hook}_hook".to_sym)
227
- plugin.send("#{hook}_hook", params)
227
+ plugin.send("#{hook}_hook", **params)
228
228
  end
229
229
  end
230
230
  end
@@ -89,7 +89,7 @@ module RokuBuilder
89
89
  attrs = {}
90
90
  attrs[section_singular] = content
91
91
  method = "validate_#{section_singular}".to_sym
92
- send(method, attrs)
92
+ send(method, **attrs)
93
93
  end
94
94
 
95
95
  def singularize(section:)
@@ -30,6 +30,7 @@ module RokuBuilder
30
30
  def analyze(options:, quiet: false)
31
31
  @options = options
32
32
  @warnings = []
33
+ @sca_warning = {}
33
34
  performance_config = get_config("performance_config.json")
34
35
  linter_config = get_config(".roku_builder_linter.json", true)
35
36
  linter_config ||= {is_ssai: false}
@@ -13,38 +13,57 @@ module RokuBuilder
13
13
  File.open(file_path) do |file|
14
14
  in_xml_comment = false
15
15
  indent_inspector = IndentationInspector.new(rules: @indent_config, path: file_path) if @indent_config
16
+ full_file = []
17
+ file_no_comments = []
18
+ lines_to_ignore = []
16
19
  file.readlines.each_with_index do |line, line_number|
17
20
  full_line = line.dup
18
- line = line.partition("'").first if file_path.end_with?(".brs")
21
+ line.gsub!(/'.*/, "") if file_path.end_with?(".brs")
19
22
  if file_path.end_with?(".xml")
20
23
  if in_xml_comment
21
24
  if line.gsub!(/.*-->/, "")
22
25
  in_xml_comment = false
23
26
  else
24
- line = ""
27
+ line = "\n"
25
28
  end
26
29
  end
27
30
  line.gsub!(/<!--.*-->/, "")
28
31
  in_xml_comment = true if line.gsub!(/<!--.*/, "")
29
32
  end
30
33
  indent_inspector.check_line(line: full_line, number: line_number, comment: in_xml_comment) if indent_inspector
31
- @inspector_config.each do |line_inspector|
32
- line_to_check = line
33
- line_to_check = full_line if line_inspector[:include_comments]
34
+ if /'.*ignore-warning/i.match(full_line)
35
+ lines_to_ignore.push line_number
36
+ end
37
+ full_file.push(full_line)
38
+ file_no_comments.push(line)
39
+ end
40
+ @warnings += indent_inspector.warnings if indent_inspector
41
+ no_comments = file_no_comments.join("")
42
+ file = full_file.join("")
43
+ @inspector_config.each do |line_inspector|
44
+ unless line_inspector[:disabled]
45
+ to_check = no_comments
46
+ to_check = file if line_inspector[:include_comments]
34
47
  match = nil
35
- if line_inspector[:case_sensitive]
36
- match = /#{line_inspector[:regex]}/.match(line_to_check)
37
- else
38
- match = /#{line_inspector[:regex]}/i.match(line_to_check)
39
- end
40
- if match
41
- unless /'.*ignore-warning/i.match(full_line)
42
- add_warning(inspector: line_inspector, file: file_path, line: line_number, match: match)
48
+ start = 0
49
+ loop do
50
+ if line_inspector[:case_sensitive]
51
+ match = /#{line_inspector[:regex]}/.match(to_check, start)
52
+ else
53
+ match = /#{line_inspector[:regex]}/i.match(to_check, start)
54
+ end
55
+ if match
56
+ start = match.end(0)
57
+ line_number = to_check[0..match.begin(0)].split("\n", -1).count - 1
58
+ unless lines_to_ignore.include?(line_number)
59
+ add_warning(inspector: line_inspector, file: file_path, line: line_number, match: match)
60
+ end
61
+ else
62
+ break
43
63
  end
44
64
  end
45
65
  end
46
66
  end
47
- @warnings += indent_inspector.warnings if indent_inspector
48
67
  end
49
68
  @warnings
50
69
  end
@@ -7,7 +7,7 @@ module RokuBuilder
7
7
  extend Plugin
8
8
 
9
9
  def init
10
- @warningFileSize = 250 * 1024
10
+ @warningFileSize = 500 * 1024
11
11
  end
12
12
 
13
13
  def self.commands
@@ -37,6 +37,9 @@ module RokuBuilder
37
37
  parser.on("-x", "--exclude", "Apply exclude config to sideload") do
38
38
  options[:exclude] = true
39
39
  end
40
+ parser.on("--remote-debug", "Sideload will enable remote debug") do
41
+ options[:remoteDebug] = true
42
+ end
40
43
  end
41
44
 
42
45
  def self.dependencies
@@ -52,7 +55,7 @@ module RokuBuilder
52
55
  build(options: options)
53
56
  end
54
57
  keep_build_file = is_build_command(options) and options[:out]
55
- upload
58
+ upload(options)
56
59
  # Cleanup
57
60
  File.delete(file_path(:in)) if did_build and not keep_build_file
58
61
  end
@@ -99,11 +102,12 @@ module RokuBuilder
99
102
  [:sideload, :build].include? options.command
100
103
  end
101
104
 
102
- def upload
105
+ def upload(options)
103
106
  payload = {
104
107
  mysubmit: "Replace",
105
- archive: Faraday::UploadIO.new(file_path(:in), 'application/zip')
108
+ archive: Faraday::UploadIO.new(file_path(:in), 'application/zip'),
106
109
  }
110
+ payload["remotedebug"] = "1" if options[:remoteDebug]
107
111
  response = multipart_connection.post "/plugin_install", payload
108
112
  @logger.debug("Status: #{response.status}, Body: #{response.body}")
109
113
  if response.status==200 and response.body=~/Identical to previous version/
@@ -10,7 +10,7 @@
10
10
  "message": "Found DoesExist check. Try using invalid check on dot reference"
11
11
  },
12
12
  {
13
- "regex": "[^\\s]+\\[\"[^\"]+\"\\]",
13
+ "regex": "\\w+\\[\"[^\"]+\"\\]",
14
14
  "severity": "warning",
15
15
  "message": "Found AA String reference. Try switching to dot reference"
16
16
  },
@@ -7,7 +7,7 @@
7
7
  # you may not use this file except in compliance with the License.
8
8
  # You may obtain a copy of the License at
9
9
  #
10
- # http://www.apache.org/licenses/LICENSE-2.0
10
+ # https://www.apache.org/licenses/LICENSE-2.0
11
11
  #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
@@ -80,7 +80,8 @@ case "`uname`" in
80
80
  ;;
81
81
  esac
82
82
 
83
- CLASSPATH=$APP_HOME/lib/sca-cmd.jar
83
+ CLASSPATH=$APP_HOME/lib/sca-cmd.jar:$APP_HOME/lib/sca-library.jar:$APP_HOME/lib/commons-cli-1.4.jar:$APP_HOME/lib/jackson-module-jaxb-annotations-2.12.2.jar:$APP_HOME/lib/jackson-databind-2.12.2.jar:$APP_HOME/lib/jackson-annotations-2.12.2.jar:$APP_HOME/lib/jackson-core-2.12.2.jar:$APP_HOME/lib/jackson-dataformat-xml-2.12.2.jar:$APP_HOME/lib/commons-io-2.8.0.jar:$APP_HOME/lib/commons-lang3-3.12.0.jar:$APP_HOME/lib/commons-compress-1.20.jar:$APP_HOME/lib/woodstox-core-6.2.4.jar:$APP_HOME/lib/stax2-api-4.2.1.jar:$APP_HOME/lib/jakarta.xml.bind-api-2.3.2.jar:$APP_HOME/lib/jakarta.activation-api-1.2.1.jar
84
+
84
85
 
85
86
  # Determine the Java command to use to start the JVM.
86
87
  if [ -n "$JAVA_HOME" ] ; then
@@ -125,10 +126,11 @@ if $darwin; then
125
126
  GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
126
127
  fi
127
128
 
128
- # For Cygwin, switch paths to Windows format before running java
129
- if $cygwin ; then
129
+ # For Cygwin or MSYS, switch paths to Windows format before running java
130
+ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
130
131
  APP_HOME=`cygpath --path --mixed "$APP_HOME"`
131
132
  CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133
+
132
134
  JAVACMD=`cygpath --unix "$JAVACMD"`
133
135
 
134
136
  # We build the pattern for arguments to be converted via cygpath
@@ -154,19 +156,19 @@ if $cygwin ; then
154
156
  else
155
157
  eval `echo args$i`="\"$arg\""
156
158
  fi
157
- i=$((i+1))
159
+ i=`expr $i + 1`
158
160
  done
159
161
  case $i in
160
- (0) set -- ;;
161
- (1) set -- "$args0" ;;
162
- (2) set -- "$args0" "$args1" ;;
163
- (3) set -- "$args0" "$args1" "$args2" ;;
164
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
165
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
166
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
167
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
168
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
169
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
162
+ 0) set -- ;;
163
+ 1) set -- "$args0" ;;
164
+ 2) set -- "$args0" "$args1" ;;
165
+ 3) set -- "$args0" "$args1" "$args2" ;;
166
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
170
172
  esac
171
173
  fi
172
174
 
@@ -175,14 +177,9 @@ save () {
175
177
  for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
176
178
  echo " "
177
179
  }
178
- APP_ARGS=$(save "$@")
180
+ APP_ARGS=`save "$@"`
179
181
 
180
182
  # Collect all arguments for the java command, following the shell quoting and substitution rules
181
183
  eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $SCA_CMD_OPTS -classpath "\"$CLASSPATH\"" com.roku.sca.cmd.CommandLineInterface "$APP_ARGS"
182
184
 
183
- # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
184
- if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
185
- cd "$(dirname "$0")"
186
- fi
187
-
188
185
  exec "$JAVACMD" "$@"
@@ -5,7 +5,7 @@
5
5
  @rem you may not use this file except in compliance with the License.
6
6
  @rem You may obtain a copy of the License at
7
7
  @rem
8
- @rem http://www.apache.org/licenses/LICENSE-2.0
8
+ @rem https://www.apache.org/licenses/LICENSE-2.0
9
9
  @rem
10
10
  @rem Unless required by applicable law or agreed to in writing, software
11
11
  @rem distributed under the License is distributed on an "AS IS" BASIS,
@@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=.
29
29
  set APP_BASE_NAME=%~n0
30
30
  set APP_HOME=%DIRNAME%..
31
31
 
32
+ @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33
+ for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34
+
32
35
  @rem Add default JVM options here. You can also use JAVA_OPTS and SCA_CMD_OPTS to pass JVM options to this script.
33
36
  set DEFAULT_JVM_OPTS=
34
37
 
@@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
37
40
 
38
41
  set JAVA_EXE=java.exe
39
42
  %JAVA_EXE% -version >NUL 2>&1
40
- if "%ERRORLEVEL%" == "0" goto init
43
+ if "%ERRORLEVEL%" == "0" goto execute
41
44
 
42
45
  echo.
43
46
  echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -51,7 +54,7 @@ goto fail
51
54
  set JAVA_HOME=%JAVA_HOME:"=%
52
55
  set JAVA_EXE=%JAVA_HOME%/bin/java.exe
53
56
 
54
- if exist "%JAVA_EXE%" goto init
57
+ if exist "%JAVA_EXE%" goto execute
55
58
 
56
59
  echo.
57
60
  echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -61,28 +64,14 @@ echo location of your Java installation.
61
64
 
62
65
  goto fail
63
66
 
64
- :init
65
- @rem Get command-line arguments, handling Windows variants
66
-
67
- if not "%OS%" == "Windows_NT" goto win9xME_args
68
-
69
- :win9xME_args
70
- @rem Slurp the command line arguments.
71
- set CMD_LINE_ARGS=
72
- set _SKIP=2
73
-
74
- :win9xME_args_slurp
75
- if "x%~1" == "x" goto execute
76
-
77
- set CMD_LINE_ARGS=%*
78
-
79
67
  :execute
80
68
  @rem Setup the command line
81
69
 
82
- set CLASSPATH=%APP_HOME%\lib\sca-cmd.jar
70
+ set CLASSPATH=%APP_HOME%\lib\sca-cmd.jar;%APP_HOME%\lib\sca-library.jar;%APP_HOME%\lib\commons-cli-1.4.jar;%APP_HOME%\lib\jackson-module-jaxb-annotations-2.12.2.jar;%APP_HOME%\lib\jackson-databind-2.12.2.jar;%APP_HOME%\lib\jackson-annotations-2.12.2.jar;%APP_HOME%\lib\jackson-core-2.12.2.jar;%APP_HOME%\lib\jackson-dataformat-xml-2.12.2.jar;%APP_HOME%\lib\commons-io-2.8.0.jar;%APP_HOME%\lib\commons-lang3-3.12.0.jar;%APP_HOME%\lib\commons-compress-1.20.jar;%APP_HOME%\lib\woodstox-core-6.2.4.jar;%APP_HOME%\lib\stax2-api-4.2.1.jar;%APP_HOME%\lib\jakarta.xml.bind-api-2.3.2.jar;%APP_HOME%\lib\jakarta.activation-api-1.2.1.jar
71
+
83
72
 
84
73
  @rem Execute sca-cmd
85
- "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SCA_CMD_OPTS% -classpath "%CLASSPATH%" com.roku.sca.cmd.CommandLineInterface %CMD_LINE_ARGS%
74
+ "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %SCA_CMD_OPTS% -classpath "%CLASSPATH%" com.roku.sca.cmd.CommandLineInterface %*
86
75
 
87
76
  :end
88
77
  @rem End local scope for the variables with windows NT shell
@@ -2,5 +2,5 @@
2
2
 
3
3
  module RokuBuilder
4
4
  # Version of the RokuBuilder Gem
5
- VERSION = "4.21.3"
5
+ VERSION = "4.22.1"
6
6
  end
@@ -106,7 +106,7 @@ module RokuBuilder
106
106
  warnings = test_file(text: "function test() as String 'IGNORE-WARNING\n? \"test\"\nend function")
107
107
  assert_equal 0, warnings.count
108
108
  end
109
- def test_performance_for_loop_title_case
109
+ def test_performance_for_each_loop_title_case
110
110
  warnings = test_file(text: "For each button in buttons\n ? button\nEND FOR")
111
111
  assert_equal 0, warnings.count
112
112
  end
@@ -148,6 +148,7 @@ module RokuBuilder
148
148
  end
149
149
 
150
150
  logger.verify
151
+ warnings
151
152
  end
152
153
 
153
154
  def test(quiet=true)
@@ -32,7 +32,8 @@ module RokuBuilder
32
32
  end
33
33
  count = 0
34
34
  read_stub = Proc.new do |size|
35
- raise SystemExit if count = 2
35
+ shouldExit = (count = 2)
36
+ raise SystemExit if shouldExit
36
37
  count += 1
37
38
  end
38
39
  connection = Minitest::Mock.new
@@ -32,14 +32,13 @@ module RokuBuilder
32
32
  end
33
33
  def test_options_parse
34
34
  parser = Minitest::Mock.new()
35
- options_hash = {}
36
35
  options = Options.allocate
37
36
  parser.expect(:banner=, nil, [String])
38
37
  parser.expect(:parse!, nil)
39
38
  OptionParser.stub(:new, parser) do
40
39
  options.stub(:add_plugin_options, nil) do
41
40
  options.stub(:validate_parser, nil) do
42
- options_hash = options.send(:parse)
41
+ options.send(:parse)
43
42
  end
44
43
  end
45
44
  end
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: 4.21.3
4
+ version: 4.22.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - greeneca
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-06 00:00:00.000000000 Z
11
+ date: 2021-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -616,7 +616,7 @@ homepage: ''
616
616
  licenses:
617
617
  - Apache-2.0
618
618
  metadata: {}
619
- post_install_message:
619
+ post_install_message:
620
620
  rdoc_options: []
621
621
  require_paths:
622
622
  - lib
@@ -631,8 +631,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
631
631
  - !ruby/object:Gem::Version
632
632
  version: '0'
633
633
  requirements: []
634
- rubygems_version: 3.1.1
635
- signing_key:
634
+ rubygems_version: 3.0.8
635
+ signing_key:
636
636
  specification_version: 4
637
637
  summary: Build Tool for Roku Apps
638
638
  test_files: