roku_builder 3.13.0 → 4.0.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 (226) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG +12 -0
  4. data/Gemfile.lock +22 -7
  5. data/Guardfile +3 -3
  6. data/README.md +22 -398
  7. data/bin/roku +1 -194
  8. data/config.json.example +1 -1
  9. data/intergration/roku_builder/test_core.rb +52 -0
  10. data/intergration/roku_builder/test_files/core_intergration_test/manifest_template +7 -0
  11. data/intergration/roku_builder/test_files/core_intergration_test/test.pkg +0 -0
  12. data/intergration/roku_builder/test_files/inspector_intergration_test/components/rectanglescene.xml +28 -0
  13. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  14. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  15. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_splash_fhd.jpg +0 -0
  16. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_splash_hd.jpg +0 -0
  17. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_splash_sd.jpg +0 -0
  18. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  19. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  20. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  21. data/intergration/roku_builder/test_files/inspector_intergration_test/manifest +21 -0
  22. data/intergration/roku_builder/test_files/inspector_intergration_test/source/main.brs +23 -0
  23. data/intergration/roku_builder/test_files/inspector_intergration_test/test.pkg +0 -0
  24. data/intergration/roku_builder/test_files/linker_intergration_test/components/rectanglescene.xml +29 -0
  25. data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  26. data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  27. data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_splash_fhd.jpg +0 -0
  28. data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_splash_hd.jpg +0 -0
  29. data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_splash_sd.jpg +0 -0
  30. data/intergration/roku_builder/test_files/linker_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  31. data/intergration/roku_builder/test_files/linker_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  32. data/intergration/roku_builder/test_files/linker_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  33. data/intergration/roku_builder/test_files/linker_intergration_test/manifest +21 -0
  34. data/intergration/roku_builder/test_files/linker_intergration_test/source/main.brs +21 -0
  35. data/intergration/roku_builder/test_files/linker_intergration_test/test.pkg +0 -0
  36. data/intergration/roku_builder/test_files/loader_intergration_test/components/rectanglescene.xml +29 -0
  37. data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  38. data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  39. data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_splash_fhd.jpg +0 -0
  40. data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_splash_hd.jpg +0 -0
  41. data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_splash_sd.jpg +0 -0
  42. data/intergration/roku_builder/test_files/loader_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  43. data/intergration/roku_builder/test_files/loader_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  44. data/intergration/roku_builder/test_files/loader_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  45. data/intergration/roku_builder/test_files/loader_intergration_test/manifest +21 -0
  46. data/intergration/roku_builder/test_files/loader_intergration_test/source/main.brs +21 -0
  47. data/intergration/roku_builder/test_files/loader_intergration_test/test.pkg +0 -0
  48. data/intergration/roku_builder/test_files/monitor_intergration_test/components/rectanglescene.xml +29 -0
  49. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  50. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  51. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_splash_fhd.jpg +0 -0
  52. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_splash_hd.jpg +0 -0
  53. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_splash_sd.jpg +0 -0
  54. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  55. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  56. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  57. data/intergration/roku_builder/test_files/monitor_intergration_test/manifest +21 -0
  58. data/intergration/roku_builder/test_files/monitor_intergration_test/source/main.brs +21 -0
  59. data/intergration/roku_builder/test_files/monitor_intergration_test/test.pkg +0 -0
  60. data/intergration/roku_builder/test_files/navigator_intergration_test/components/rectanglescene.xml +29 -0
  61. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  62. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  63. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_splash_fhd.jpg +0 -0
  64. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_splash_hd.jpg +0 -0
  65. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_splash_sd.jpg +0 -0
  66. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  67. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  68. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  69. data/intergration/roku_builder/test_files/navigator_intergration_test/manifest +21 -0
  70. data/intergration/roku_builder/test_files/navigator_intergration_test/source/main.brs +21 -0
  71. data/intergration/roku_builder/test_files/navigator_intergration_test/test.pkg +0 -0
  72. data/intergration/roku_builder/test_files/packager_intergration_test/components/rectanglescene.xml +29 -0
  73. data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  74. data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  75. data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_splash_fhd.jpg +0 -0
  76. data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_splash_hd.jpg +0 -0
  77. data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_splash_sd.jpg +0 -0
  78. data/intergration/roku_builder/test_files/packager_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  79. data/intergration/roku_builder/test_files/packager_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  80. data/intergration/roku_builder/test_files/packager_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  81. data/intergration/roku_builder/test_files/packager_intergration_test/manifest +21 -0
  82. data/intergration/roku_builder/test_files/packager_intergration_test/source/main.brs +21 -0
  83. data/intergration/roku_builder/test_files/packager_intergration_test/test.pkg +0 -0
  84. data/intergration/roku_builder/test_files/profiler_intergration_test/components/rectanglescene.xml +29 -0
  85. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  86. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  87. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_splash_fhd.jpg +0 -0
  88. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_splash_hd.jpg +0 -0
  89. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_splash_sd.jpg +0 -0
  90. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  91. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  92. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  93. data/intergration/roku_builder/test_files/profiler_intergration_test/manifest +21 -0
  94. data/intergration/roku_builder/test_files/profiler_intergration_test/source/main.brs +21 -0
  95. data/intergration/roku_builder/test_files/profiler_intergration_test/test.pkg +0 -0
  96. data/intergration/roku_builder/test_files/scripter_intergration_test/components/rectanglescene.xml +29 -0
  97. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  98. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  99. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_splash_fhd.jpg +0 -0
  100. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_splash_hd.jpg +0 -0
  101. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_splash_sd.jpg +0 -0
  102. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  103. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  104. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  105. data/intergration/roku_builder/test_files/scripter_intergration_test/manifest +21 -0
  106. data/intergration/roku_builder/test_files/scripter_intergration_test/source/main.brs +21 -0
  107. data/intergration/roku_builder/test_files/scripter_intergration_test/test.pkg +0 -0
  108. data/intergration/roku_builder/test_files/tester_intergration_test/components/rectanglescene.xml +29 -0
  109. data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  110. data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  111. data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_splash_fhd.jpg +0 -0
  112. data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_splash_hd.jpg +0 -0
  113. data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_splash_sd.jpg +0 -0
  114. data/intergration/roku_builder/test_files/tester_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  115. data/intergration/roku_builder/test_files/tester_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  116. data/intergration/roku_builder/test_files/tester_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  117. data/intergration/roku_builder/test_files/tester_intergration_test/manifest +21 -0
  118. data/intergration/roku_builder/test_files/tester_intergration_test/source/main.brs +21 -0
  119. data/intergration/roku_builder/test_files/tester_intergration_test/test.pkg +0 -0
  120. data/intergration/roku_builder/test_helper.rb +138 -0
  121. data/intergration/roku_builder/test_inspector.rb +35 -0
  122. data/intergration/roku_builder/test_linker.rb +32 -0
  123. data/intergration/roku_builder/test_loader.rb +38 -0
  124. data/intergration/roku_builder/test_monitor.rb +21 -0
  125. data/intergration/roku_builder/test_navigator.rb +34 -0
  126. data/intergration/roku_builder/test_packager.rb +41 -0
  127. data/intergration/roku_builder/test_profiler.rb +48 -0
  128. data/intergration/roku_builder/test_scripter.rb +38 -0
  129. data/intergration/roku_builder/test_tester.rb +21 -0
  130. data/lib/roku_builder.rb +143 -154
  131. data/lib/roku_builder/config.rb +17 -40
  132. data/lib/roku_builder/config_parser.rb +49 -200
  133. data/lib/roku_builder/config_validator.rb +1 -1
  134. data/lib/roku_builder/errors.rb +12 -0
  135. data/lib/roku_builder/git.rb +28 -0
  136. data/lib/roku_builder/hash.rb +8 -0
  137. data/lib/roku_builder/manifest.rb +121 -0
  138. data/lib/roku_builder/options.rb +68 -29
  139. data/lib/roku_builder/plugin.rb +30 -0
  140. data/lib/roku_builder/plugins/core.rb +117 -0
  141. data/lib/roku_builder/plugins/inspector.rb +104 -0
  142. data/lib/roku_builder/{linker.rb → plugins/linker.rb} +38 -12
  143. data/lib/roku_builder/plugins/loader.rb +152 -0
  144. data/lib/roku_builder/{monitor.rb → plugins/monitor.rb} +20 -9
  145. data/lib/roku_builder/{navigator.rb → plugins/navigator.rb} +136 -88
  146. data/lib/roku_builder/plugins/packager.rb +194 -0
  147. data/lib/roku_builder/plugins/profiler.rb +135 -0
  148. data/lib/roku_builder/plugins/scripter.rb +53 -0
  149. data/lib/roku_builder/{tester.rb → plugins/tester.rb} +28 -19
  150. data/lib/roku_builder/stager.rb +48 -12
  151. data/lib/roku_builder/string.rb +20 -0
  152. data/lib/roku_builder/util.rb +10 -34
  153. data/lib/roku_builder/version.rb +1 -1
  154. data/rakefile +5 -1
  155. data/roku_builder.gemspec +2 -0
  156. data/test/roku_builder/plugins/test_core.rb +112 -0
  157. data/test/roku_builder/plugins/test_inspector.rb +165 -0
  158. data/test/roku_builder/plugins/test_linker.rb +123 -0
  159. data/test/roku_builder/plugins/test_loader.rb +115 -0
  160. data/test/roku_builder/plugins/test_monitor.rb +141 -0
  161. data/test/roku_builder/plugins/test_navigator.rb +274 -0
  162. data/test/roku_builder/plugins/test_packager.rb +202 -0
  163. data/test/roku_builder/plugins/test_profiler.rb +127 -0
  164. data/test/roku_builder/plugins/test_scripter.rb +110 -0
  165. data/test/roku_builder/plugins/test_tester.rb +109 -0
  166. data/test/roku_builder/test_config.rb +51 -35
  167. data/test/roku_builder/test_config_parser.rb +76 -154
  168. data/test/roku_builder/test_config_validator.rb +18 -1
  169. data/test/roku_builder/test_files/{loader_test/manifest → config_parser_test/test.pkg} +0 -0
  170. data/test/roku_builder/test_files/config_test/config.json +3 -0
  171. data/test/roku_builder/test_files/controller_commands_test/manifest_template +7 -0
  172. data/test/roku_builder/test_files/core_test/manifest_template +7 -0
  173. data/test/roku_builder/test_files/core_test/test.pkg +0 -0
  174. data/test/roku_builder/test_files/inspector_test/manifest +6 -0
  175. data/test/roku_builder/test_files/inspector_test/test.pkg +0 -0
  176. data/test/roku_builder/test_files/linker_test/manifest +6 -0
  177. data/test/roku_builder/test_files/linker_test/test.pkg +0 -0
  178. data/test/roku_builder/test_files/loader_test/manifest_template +6 -0
  179. data/test/roku_builder/test_files/loader_test/test.pkg +0 -0
  180. data/test/roku_builder/test_files/loader_test/test.zip +0 -0
  181. data/test/roku_builder/test_files/manifest_test/manifest_comments +6 -0
  182. data/test/roku_builder/test_files/manifest_test/manifest_template +7 -0
  183. data/test/roku_builder/test_files/manifest_test/test.zip +0 -0
  184. data/test/roku_builder/test_files/packager_test/manifest +6 -0
  185. data/test/roku_builder/test_files/packager_test/scripter_test/manifest +6 -0
  186. data/test/roku_builder/test_files/packager_test/test.pkg +0 -0
  187. data/test/roku_builder/test_files/roku_builder_test/config.json +32 -0
  188. data/test/roku_builder/test_files/scripter_test/manifest +6 -0
  189. data/test/roku_builder/test_files/scripter_test/test.pkg +0 -0
  190. data/test/roku_builder/test_files/stager_test/test.pkg +0 -0
  191. data/test/roku_builder/test_files/tester_test/manifest +6 -0
  192. data/test/roku_builder/test_files/tester_test/test.pkg +0 -0
  193. data/test/roku_builder/test_helper.rb +44 -11
  194. data/test/roku_builder/test_logger.rb +1 -0
  195. data/test/roku_builder/test_manifest.rb +99 -0
  196. data/test/roku_builder/test_options.rb +106 -77
  197. data/test/roku_builder/test_options_plugins.rb +111 -0
  198. data/test/roku_builder/test_plugin.rb +48 -0
  199. data/test/roku_builder/test_roku_builder.rb +239 -0
  200. data/test/roku_builder/test_stager.rb +49 -101
  201. data/test/roku_builder/test_util.rb +19 -4
  202. metadata +241 -47
  203. data/lib/roku_builder/controller.rb +0 -98
  204. data/lib/roku_builder/controller_commands.rb +0 -224
  205. data/lib/roku_builder/error_handler.rb +0 -142
  206. data/lib/roku_builder/inspector.rb +0 -82
  207. data/lib/roku_builder/keyer.rb +0 -106
  208. data/lib/roku_builder/loader.rb +0 -131
  209. data/lib/roku_builder/manifest_manager.rb +0 -126
  210. data/lib/roku_builder/packager.rb +0 -43
  211. data/lib/roku_builder/profiler.rb +0 -96
  212. data/lib/roku_builder/scripter.rb +0 -39
  213. data/test/roku_builder/test_controller.rb +0 -70
  214. data/test/roku_builder/test_controller_commands.rb +0 -465
  215. data/test/roku_builder/test_error_handler.rb +0 -90
  216. data/test/roku_builder/test_inspector.rb +0 -298
  217. data/test/roku_builder/test_keyer.rb +0 -176
  218. data/test/roku_builder/test_linker.rb +0 -110
  219. data/test/roku_builder/test_loader.rb +0 -337
  220. data/test/roku_builder/test_manifest_manager.rb +0 -103
  221. data/test/roku_builder/test_monitor.rb +0 -137
  222. data/test/roku_builder/test_navigator.rb +0 -280
  223. data/test/roku_builder/test_packager.rb +0 -127
  224. data/test/roku_builder/test_profiler.rb +0 -35
  225. data/test/roku_builder/test_scripter.rb +0 -102
  226. data/test/roku_builder/test_tester.rb +0 -130
data/bin/roku CHANGED
@@ -5,198 +5,5 @@ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
5
5
 
6
6
  #require "byebug"
7
7
  require "roku_builder"
8
- require "optparse"
9
- require "pathname"
10
-
11
- options = {}
12
- options[:config] = '~/.roku_config.json'
13
- options[:update_manifest] = false
14
-
15
-
16
- parser = OptionParser.new do |opts|
17
- opts.banner = "Usage: roku <command> [options]"
18
-
19
- opts.on("-l", "--sideload", "Command: Sideload an app") do
20
- options[:sideload] = true
21
- end
22
-
23
- opts.on("-p", "--package", "Command: Package an app") do
24
- options[:package] = true
25
- end
26
-
27
- opts.on("-t", "--test", "Command: Test an app") do
28
- options[:test] = true
29
- end
30
-
31
- opts.on("-L", "--deeplink", "Depricated: Deeplink now just requires -o or --deeplink-options") do
32
- options[:deeplink_depricated] = true
33
- end
34
-
35
- opts.on("-o", "--deeplink-options OPTIONS", "Command: Deeplink into app. Define options as keypairs. (eg. a:b, c:d,e:f)") do |o|
36
- options[:deeplink] = o
37
- end
38
-
39
- opts.on("--configure", "Command: Copy base configuration file to the --config location. Default: '~/.roku_config.json'") do
40
- options[:configure] = true
41
- end
42
-
43
- opts.on("--validate", "Command: Validate configuration'") do
44
- options[:validate] = true
45
- end
46
-
47
- opts.on("-d", "--delete", "Command: Delete the currently sideloaded app") do
48
- options[:delete] = true
49
- end
50
-
51
- opts.on("-N", "--nav CMD", "Command: send the given command to the roku") do |n|
52
- options[:navigate] = n
53
- end
54
-
55
- opts.on("--navigate", "Command: Run interactive navigator") do
56
- options[:navigator] = true
57
- end
58
-
59
- opts.on("-S", "--screencapture", "Command: save a screencapture to the output file/folder") do
60
- options[:screencapture] = true
61
- end
62
-
63
- opts.on("-y", "--type TEXT", "Command: type the given text on the roku device") do |t|
64
- options[:text] = t
65
- end
66
-
67
- opts.on("-b", "--build", "Command: build a zip to be sideloaded") do
68
- options[:build] = true
69
- end
70
-
71
- opts.on("-k", "--key", "Command: change device key") do
72
- options[:key] = true
73
- end
74
-
75
- opts.on("--genkey", "Command: generate a new key") do
76
- options[:genkey] = true
77
- end
78
-
79
- opts.on("--print ATTRIBUTE", "Command: Print attribute for scripting") do |a|
80
- options[:print] = a
81
- end
82
-
83
- opts.on("--profile COMMAND", "Command: Run various profiler options") do |c|
84
- options[:profile] = c
85
- end
86
-
87
- opts.on("--do-stage", "Command: Run the stager. Used for scripting. Always run --do-unstage after") do
88
- options[:dostage] = true
89
- end
90
-
91
- opts.on("--do-unstage", "Command: Run the unstager. Used for scripting. Always run --do-script first") do
92
- options[:dounstage] = true
93
- end
94
-
95
- opts.on("--screen SCREEN", "Command: show a screen") do |s|
96
- options[:screen] = s
97
- end
98
-
99
- opts.on("--screens", "Command: show possible screens") do
100
- options[:screens] = true
101
- end
102
-
103
- opts.on("-m", "--monitor [TYPE]", "Command: run telnet to monitor roku log") do |m|
104
- options[:monitor] = m || "main"
105
- end
106
-
107
- opts.on("-u", "--update-manifest", "Command: update the manifest file") do
108
- options[:update] = true
109
- end
110
-
111
- opts.on("-A", "--app-list", "Command: List currently installed apps") do
112
- options[:applist] = true
113
- end
114
-
115
- opts.on("-r", "--ref REF", "Git referance to use for sideloading") do |r|
116
- options[:ref] = r
117
- end
118
-
119
- opts.on("-w", "--working", "Use working directory to sideload or test") do
120
- options[:working] = true
121
- end
122
-
123
- opts.on("-c", "--current", "Use current directory to sideload or test. Overrides any project config") do
124
- options[:current] = true
125
- end
126
-
127
- opts.on("-s", "--stage STAGE", "Set the stage to use. Default: 'production'") do |b|
128
- options[:stage] = b
129
- options[:set_stage] = true
130
- end
131
-
132
- opts.on("-M", "--manifest-update", "Update the manifest file while building or packaging") do
133
- options[:update_manifest] = true
134
- end
135
-
136
- opts.on("-i", "--inspect", "Print inspection information while packaging") do
137
- options[:inspect] = true
138
- end
139
-
140
- opts.on("-e", "--edit PARAMS", "Edit config params when configuring. (eg. a:b, c:d,e:f)") do |p|
141
- options[:edit_params] = p
142
- end
143
-
144
- opts.on("--config CONFIG", "Set a custom config file. Default: '~/.roku_config.json'") do |c|
145
- options[:config] = c
146
- end
147
-
148
- opts.on("-D", "--device ID", "Use a different device corresponding to the given ID") do |d|
149
- options[:device] = d
150
- options[:device_given] = true
151
- end
152
-
153
- opts.on("-P", "--project ID", "Use a different project") do |p|
154
- options[:project] = p
155
- end
156
-
157
- opts.on("-a", "--app ID", "Send App id for deeplinking") do |a|
158
- options[:app_id] = a
159
- end
160
-
161
- opts.on("-O", "--out PATH", "Output file/folder. If PATH ends in .pkg/.zip/.jpg, file is assumed, otherwise folder is assumed") do |o|
162
- options[:out] = o
163
- end
164
-
165
- opts.on("-I", "--in PATH", "Input file for sideloading") do |i|
166
- options[:in] = i
167
- end
168
-
169
- opts.on("-r", "--regexp REGEXP", "A regular expression used to filter monitor logs") do |r|
170
- options[:regexp] = r
171
- end
172
-
173
- opts.on("-x", "--exclude", "Apply exclude config to sideload") do
174
- options[:exclude] = true
175
- end
176
-
177
- opts.on("-V", "--verbose", "Print Info message") do
178
- options[:verbose] = true
179
- end
180
-
181
- opts.on("--debug", "Print Debug messages") do
182
- options[:debug] = true
183
- end
184
-
185
- opts.on("-h", "--help", "Show this message") do
186
- puts opts
187
- exit
188
- end
189
-
190
- opts.on("-v", "--version", "Show version") do
191
- puts RokuBuilder::VERSION
192
- exit
193
- end
194
- end
195
-
196
- begin
197
- parser.parse!
198
- RokuBuilder::Controller.run(options: options)
199
- rescue StandardError => e
200
- RokuBuilder::Logger.instance.fatal e.message
201
- end
202
8
 
9
+ RokuBuilder.run()
data/config.json.example CHANGED
@@ -33,7 +33,7 @@
33
33
  "password": "<password>"
34
34
  }
35
35
  },
36
- "input_mapping": {
36
+ "input_mappings": {
37
37
  "\\e[1~": [ "home", "Home" ],
38
38
  "<": [ "rew", "<" ],
39
39
  ">": [ "ff", ">" ],
@@ -0,0 +1,52 @@
1
+ # ********** Copyright Viacom, Inc. Apache 2.0 **********
2
+
3
+ require_relative "test_helper.rb"
4
+
5
+ module RokuBuilder
6
+ class CoreIntergrationTest < Minitest::Test
7
+ include Helpers
8
+ def setup
9
+ @config = build_config(CoreIntergrationTest)
10
+ end
11
+ def teardown
12
+ FileUtils.rm(@config) if File.exist?(@config)
13
+ end
14
+ def test_configure
15
+ config = File.join(testfiles_path(CoreIntergrationTest), "configure.json")
16
+ FileUtils.rm(config) if File.exist?(config)
17
+ output = `bin/roku --configure --config #{config}`
18
+ assert File.exist?(config)
19
+ assert output =~ /Configured/
20
+ FileUtils.rm(config) if File.exist?(config)
21
+ end
22
+ def test_validate
23
+ output = `bin/roku --validate --config #{@config}`
24
+ assert output =~ /Validated/
25
+ end
26
+ def test_validate_bad
27
+ config = good_config(CoreIntergrationTest)
28
+ config[:devices][:roku].delete(:ip)
29
+ config = build_config(CoreIntergrationTest, "config.json", config)
30
+ output = `bin/roku --validate --config #{config}`
31
+ assert output =~ /IP address/
32
+ assert output =~ /Invalid/
33
+ end
34
+ def test_update_manifest
35
+ target = File.join(testfiles_path(CoreIntergrationTest), "manifest")
36
+ source = File.join(testfiles_path(CoreIntergrationTest), "manifest_template")
37
+ FileUtils.cp source, target
38
+ `bin/roku --update-manifest --working --config #{@config}`
39
+ refute FileUtils.compare_file(source, target)
40
+ FileUtils.rm target
41
+ end
42
+ def test_stage_unstage
43
+ target = File.join(testfiles_path(CoreIntergrationTest), "file.tmp")
44
+ refute File.exist?(target)
45
+ `bin/roku --do-stage --stage production --config #{@config}`
46
+ assert File.exist?(target)
47
+ `bin/roku --do-unstage --stage production --config #{@config}`
48
+ refute File.exist?(target)
49
+ end
50
+ end
51
+ end
52
+
@@ -0,0 +1,7 @@
1
+ #comment
2
+ title=Test
3
+ major_version=1
4
+ minor_version=0
5
+ build_version=010101.1
6
+ mm_icon_focus_hd=pkg:/images/focus.png
7
+ mm_icon_focus_sd=pkg:/images/focus.png
@@ -0,0 +1,28 @@
1
+ <?xml version = "1.0" encoding = "utf-8" ?>
2
+
3
+ <!--********** Copyright 2016 Roku Corp. All Rights Reserved. **********-->
4
+
5
+ <component name = "RectangleExample" extends = "Scene" >
6
+ <script type = "text/brightscript" uri = "uuid.brs" />
7
+ <script type = "text/brightscript" >
8
+ <![CDATA[
9
+ sub init()
10
+ m.top.backgroundURI = "pkg:/images/rsgde_bg_hd.jpg"
11
+ example = m.top.findNode("exampleRectangle")
12
+ examplerect = example.boundingRect()
13
+ centerx = (1280 - examplerect.width) / 2
14
+ centery = (720 - examplerect.height) / 2
15
+ example.translation = [ centerx, centery ]
16
+ m.top.setFocus(true)
17
+ print uuid()
18
+ end sub
19
+ ]]>
20
+ </script>
21
+ <children >
22
+ <Rectangle
23
+ id = "exampleRectangle"
24
+ width = "512"
25
+ height = "288"
26
+ color = "0x1010EBFF" />
27
+ </children>
28
+ </component>
@@ -0,0 +1,21 @@
1
+ '********** Copyright 2016 Roku Corp. All Rights Reserved. **********
2
+
3
+ title=Rectangle Example
4
+ subtitle=A Roku Scene Graph Development Example
5
+ major_version=1
6
+ minor_version=0
7
+ build_version=00000
8
+
9
+ mm_icon_focus_hd=pkg:/images/rsgde_mm_focus_hd.jpg
10
+ mm_icon_focus_sd=pkg:/images/rde_mm_focus_sd.jpg
11
+
12
+ splash_screen_sd=pkg:/images/rde_splash_sd.jpg
13
+
14
+ splash_screen_hd=pkg:/images/rsgde_splash_hd.jpg
15
+
16
+ splash_screen_fhd=pkg:/images/rde_splash_fhd.jpg
17
+
18
+ splash_color=#662D91
19
+ splash_min_time=1000
20
+
21
+ ui_resolutions = "hd"
@@ -0,0 +1,23 @@
1
+ '********** Copyright 2016 Roku Corp. All Rights Reserved. **********
2
+
3
+ sub Main()
4
+ showChannelSGScreen()
5
+ end sub
6
+
7
+ sub showChannelSGScreen()
8
+ screen = CreateObject("roSGScreen")
9
+ m.port = CreateObject("roMessagePort")
10
+ screen.setMessagePort(m.port)
11
+ scene = screen.CreateScene("RectangleExample")
12
+ screen.show()
13
+
14
+ while(true)
15
+ msg = wait(0, m.port)
16
+ msgType = type(msg)
17
+
18
+ if msgType = "roSGScreenEvent"
19
+ if msg.isScreenClosed() then return
20
+ end if
21
+ end while
22
+
23
+ end sub
@@ -0,0 +1,29 @@
1
+ <?xml version = "1.0" encoding = "utf-8" ?>
2
+
3
+ <!--********** Copyright 2016 Roku Corp. All Rights Reserved. **********-->
4
+
5
+ <component name = "RectangleExample" extends = "Scene" >
6
+ <script type = "text/brightscript" uri = "uuid.brs" />
7
+ <script type = "text/brightscript" >
8
+ <![CDATA[
9
+ sub init()
10
+ m.top.backgroundURI = "pkg:/images/rsgde_bg_hd.jpg"
11
+ example = m.top.findNode("exampleRectangle")
12
+ examplerect = example.boundingRect()
13
+ centerx = (1280 - examplerect.width) / 2
14
+ centery = (720 - examplerect.height) / 2
15
+ example.translation = [ centerx, centery ]
16
+ m.top.setFocus(true)
17
+ print uuid()
18
+ print m.global.externalParams.uuid
19
+ end sub
20
+ ]]>
21
+ </script>
22
+ <children >
23
+ <Rectangle
24
+ id = "exampleRectangle"
25
+ width = "512"
26
+ height = "288"
27
+ color = "0x1010EBFF" />
28
+ </children>
29
+ </component>
@@ -0,0 +1,21 @@
1
+ '********** Copyright 2016 Roku Corp. All Rights Reserved. **********
2
+
3
+ title=Rectangle Example
4
+ subtitle=A Roku Scene Graph Development Example
5
+ major_version=1
6
+ minor_version=0
7
+ build_version=00000
8
+
9
+ mm_icon_focus_hd=pkg:/images/rsgde_mm_focus_hd.jpg
10
+ mm_icon_focus_sd=pkg:/images/rde_mm_focus_sd.jpg
11
+
12
+ splash_screen_sd=pkg:/images/rde_splash_sd.jpg
13
+
14
+ splash_screen_hd=pkg:/images/rsgde_splash_hd.jpg
15
+
16
+ splash_screen_fhd=pkg:/images/rde_splash_fhd.jpg
17
+
18
+ splash_color=#662D91
19
+ splash_min_time=1000
20
+
21
+ ui_resolutions = "hd"
@@ -0,0 +1,21 @@
1
+ '********** Copyright 2016 Roku Corp. All Rights Reserved. **********
2
+
3
+ sub Main(externalParams)
4
+
5
+ screen = CreateObject("roSGScreen")
6
+ m.port = CreateObject("roMessagePort")
7
+ screen.setMessagePort(m.port)
8
+ scene = screen.CreateScene("RectangleExample")
9
+ screen.getGlobalNode().addFields({externalParams: externalParams})
10
+
11
+ screen.show()
12
+ while(true)
13
+ msg = wait(0, m.port)
14
+ msgType = type(msg)
15
+
16
+ if msgType = "roSGScreenEvent"
17
+ if msg.isScreenClosed() then return
18
+ end if
19
+ end while
20
+
21
+ end sub