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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd32080b9b4c8246240b9aaf4a7a2dae7d0e18e9
4
- data.tar.gz: 421453a021d14e16253702b07d8dfb356a750a2c
3
+ metadata.gz: 20601e921fb6a11cbb6bdba633e4aa54a3e94343
4
+ data.tar.gz: 66bb11a717dcac6324d27a930fb964edbab0057d
5
5
  SHA512:
6
- metadata.gz: 70e119253bf7a0379f466070e0fd97e69d2c50c2f353d32cc7985e6e6a69841840674c831f0c1873c39920453d234dc0501b93218eb34c3fae541ad38ad36465
7
- data.tar.gz: ee473164b0297a43f6034b25adb3e8d75e2dd275db33d2c3bf8fbd231cfb51720645569f0c2da1c96ef2f768a2cb67d53261c5f0342cbe2c79dca68375ed38fb
6
+ metadata.gz: 9d0e9288d2038d9c0b9d4b24f3d15bdfd02552f2c5c454edff8d9b6edb99855a56ffd1a182aaf7e12f7fa46047305e56ad20633ea268bb6f45e6bf829941bca5
7
+ data.tar.gz: 25d90e11fbfa33b52eeeb2300137c0f1b4d93afe421e228afbc32189035ab4184bb682c02726380198e19e3f0f86b05fd740171265a50f437c79297649f382d2
data/.travis.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "2.3.0"
3
+ - "2.4.1"
data/CHANGELOG CHANGED
@@ -1,3 +1,15 @@
1
+ = 4.0.0 =
2
+
3
+ - Code base refactor for maintianability
4
+ - Add plugin architecture
5
+ - Add more profiler commands
6
+ - Replaced --deeplink-options command with just --deeplink
7
+ - Added Webmock to simplify tests
8
+ - Add basic intergration tests
9
+ - Move majority of documentation to Wiki
10
+ - Update to run on ruby-2.4.1
11
+ - Update dependancies
12
+
1
13
  = 3.13.0 =
2
14
 
3
15
  - Windows combatability
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- roku_builder (3.13.0)
4
+ roku_builder (4.0.0)
5
5
  faraday (~> 0.12)
6
6
  faraday-digestauth (~> 0.2)
7
7
  git (~> 1.3)
@@ -14,6 +14,8 @@ PATH
14
14
  GEM
15
15
  remote: https://rubygems.org/
16
16
  specs:
17
+ addressable (2.5.1)
18
+ public_suffix (~> 2.0, >= 2.0.2)
17
19
  byebug (9.0.6)
18
20
  coderay (1.1.1)
19
21
  coveralls (0.8.21)
@@ -22,6 +24,8 @@ GEM
22
24
  term-ansicolor (~> 1.3)
23
25
  thor (~> 0.19.4)
24
26
  tins (~> 1.6)
27
+ crack (0.4.3)
28
+ safe_yaml (~> 1.0.0)
25
29
  docile (1.1.5)
26
30
  faraday (0.12.1)
27
31
  multipart-post (>= 1.2, < 3)
@@ -46,29 +50,32 @@ GEM
46
50
  guard-minitest (2.4.6)
47
51
  guard-compat (~> 1.2)
48
52
  minitest (>= 3.0)
53
+ hashdiff (0.3.4)
49
54
  json (2.1.0)
50
55
  listen (3.1.5)
51
56
  rb-fsevent (~> 0.9, >= 0.9.4)
52
57
  rb-inotify (~> 0.9, >= 0.9.7)
53
58
  ruby_dep (~> 1.2)
54
59
  lumberjack (1.0.12)
55
- m (1.5.0)
60
+ m (1.5.1)
56
61
  method_source (>= 0.6.7)
57
62
  rake (>= 0.9.2.2)
58
63
  method_source (0.8.2)
59
- mini_portile2 (2.1.0)
64
+ mini_portile2 (2.2.0)
60
65
  minitest (5.10.2)
61
66
  minitest-autotest (1.0.3)
62
67
  minitest-server (~> 1.0)
63
68
  minitest-server (1.0.4)
64
69
  minitest (~> 5.0)
70
+ minitest-utils (0.3.1)
71
+ minitest
65
72
  multipart-post (2.0.0)
66
73
  nenv (0.3.0)
67
74
  net-http-digest_auth (1.4.1)
68
75
  net-ping (2.0.1)
69
76
  net-telnet (0.1.1)
70
- nokogiri (1.7.2)
71
- mini_portile2 (~> 2.1.0)
77
+ nokogiri (1.8.0)
78
+ mini_portile2 (~> 2.2.0)
72
79
  notiffany (0.1.1)
73
80
  nenv (~> 0.1)
74
81
  shellany (~> 0.0)
@@ -76,23 +83,29 @@ GEM
76
83
  coderay (~> 1.1.0)
77
84
  method_source (~> 0.8.1)
78
85
  slop (~> 3.4)
86
+ public_suffix (2.0.5)
79
87
  rake (12.0.0)
80
88
  rb-fsevent (0.9.8)
81
89
  rb-inotify (0.9.8)
82
90
  ffi (>= 0.5.0)
83
91
  ruby_dep (1.5.0)
84
92
  rubyzip (1.2.1)
93
+ safe_yaml (1.0.4)
85
94
  shellany (0.0.1)
86
95
  simplecov (0.14.1)
87
96
  docile (~> 1.1.0)
88
97
  json (>= 1.8, < 3)
89
98
  simplecov-html (~> 0.10.0)
90
- simplecov-html (0.10.0)
99
+ simplecov-html (0.10.1)
91
100
  slop (3.6.0)
92
101
  term-ansicolor (1.6.0)
93
102
  tins (~> 1.0)
94
103
  thor (0.19.4)
95
104
  tins (1.14.0)
105
+ webmock (3.0.1)
106
+ addressable (>= 2.3.6)
107
+ crack (>= 0.3.2)
108
+ hashdiff
96
109
  win32-security (0.5.0)
97
110
  ffi
98
111
  ffi-win32-extensions
@@ -111,10 +124,12 @@ DEPENDENCIES
111
124
  minitest (~> 5.10)
112
125
  minitest-autotest (~> 1.0)
113
126
  minitest-server (~> 1.0)
127
+ minitest-utils (~> 0.3)
114
128
  rake (~> 12.0)
115
129
  roku_builder!
116
130
  simplecov (~> 0.12)
131
+ webmock (~> 3.0)
117
132
  yard (~> 0.9)
118
133
 
119
134
  BUNDLED WITH
120
- 1.13.7
135
+ 1.15.1
data/Guardfile CHANGED
@@ -17,10 +17,10 @@
17
17
  #
18
18
  # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
19
19
 
20
-
21
20
  guard :minitest do
22
21
  # with Minitest::Unit
23
22
  watch(%r{^test/roku_builder/(.*)\/?test_(.*)\.rb$})
24
- watch(%r{^lib/roku_builder/(.*/)?([^/]+)\.rb$}) { |m| "test/roku_builder/#{m[1]}test_#{m[2]}.rb" }
25
- watch(%r{^test/roku_builder/test_helper\.rb$}) { 'test/roku_builder' }
23
+ watch(%r{^lib/roku_builder.rb$}) { "test/roku_builder/test_roku_builder.rb" }
24
+ watch(%r{^lib/roku_builder/(.*/)?([^/]+)\.rb$}) { |m| "test/roku_builder/#{m[1]}test_#{m[2]}.rb" }
25
+ watch(%r{^test/roku_builder/test_helper\.rb$}) { 'test/roku_builder' }
26
26
  end
data/README.md CHANGED
@@ -6,35 +6,8 @@
6
6
  [![Coverage Status](https://coveralls.io/repos/github/ViacomInc/roku_builder/badge.svg?branch=master)](https://coveralls.io/github/ViacomInc/roku_builder?branch=master)
7
7
  [![Code Climate](https://codeclimate.com/github/ViacomInc/roku_builder/badges/gpa.svg)](https://codeclimate.com/github/ViacomInc/roku_builder)
8
8
 
9
- A tool to help with Roku Development. Assists with the following roku
10
- development tasks:
11
-
12
- * Sideloading
13
- * Packaging
14
- * Building
15
- * Testing
16
- * Deeplink testing
17
- * Intergration test scripting
18
- * Manifest Updating
19
- * App Deleteing
20
- * Package Inspection
21
- * Monitoring logs
22
- * Profile Scene Graph applications
23
-
24
- The tool allows scripting of the following:
25
-
26
- * Conroller inputs
27
- * Text Input
28
- * Screencaptures
29
- * Printing project information
30
-
31
- Other tasks the tool can complete:
32
-
33
- * Device navigation
34
- * Configuration Generation
35
- * Configuration Validation
36
- * Configuration Updating
37
-
9
+ A tool to help with Roku Development. Assists with many development/deployment
10
+ tasks. More information can be found in the [wiki](https://github.com/ViacomInc/roku_builder/wiki).
38
11
 
39
12
  ## Installation
40
13
 
@@ -42,390 +15,40 @@ Install it yourself with:
42
15
 
43
16
  $ gem install roku_builder
44
17
 
45
- ## Usage
46
-
47
- #### Configuration
48
-
49
- The gem must have a configuration file. To generate this file you can run the
50
- following command:
51
-
52
- $ roku --configure
53
-
54
- This will create the file '~/.roku_config.json' with a default configuration.
55
- Edit this file to add appropriate values. A configuration example with the
56
- minimum require fields can be found in this project called 'config.json.min'.
57
- The following are default configuration options:
58
-
59
- ##### Top Level Configuration
60
-
61
- * devices: information for accessing devices
62
- * projects: this is a hash of project objects
63
- * keys: contains keys that will be used for signing packages
64
- * input_mapping: allows you to change key mappings for the intractive navigator
65
-
66
- ##### Device Configuration
67
-
68
- * devices.default: id of the default device
69
- * devices.<device_id>.ip: ip address of the device
70
- * devices.<device_id>.user: dev username for the roku device
71
- * devices.<device_id>.password: dev password for the roku device
72
-
73
- ##### Project Configuration
74
-
75
- * projects.default: the key for the default project
76
- * projects.parent_dir: optional directory path that all projects are relative
77
- to
78
- * projects.<project_id>.parent: optional id of parent project to copy configs
79
- from
80
- * projects.<project_id>.directory: full path of the git repository the houses
81
- the roku app
82
- * projects.<project_id>.app_name: Name used when packaging the app
83
- * projects.<project_id>.stage_method: Which method to use for switching app
84
- stages (git or script)
85
- * projects.<project_id>.stages: a hash of stage objects
86
- * projects.<project_id>.stages.<stage_id>.branch: name of the branch for the
87
- given stage (if stage_method = git). If using stage_method = stage then
88
- this can be removed.
89
- * projects.<project_id>.stages.<stage_id>.script: scripts to use to stage the
90
- app (if stage_method = script). If using stage_method = git this can be
91
- removed.
92
- * projects.<project_id>.stages.<stage_id>.script.stage: script run form the
93
- app root directory to stage app
94
- * projects.<project_id>.stages.<stage_id>.script -> unstage: script run form
95
- the app root directory to unstage app
96
- * projects.<project_id>.stages.<stage_id>.key: this can be a string referencing
97
- a key in the keys section or a hash of options
98
- * projects.<project_id>.stages.<stage_id>.key.keyed_pkg: path to a pkg file
99
- that has been signed
100
- * projects.<project_id>.stages.<stage_id>.key.password: password for the signed pkg
101
-
102
- ##### Key Configuration
103
-
104
- * keys.key_dir: optional directory that all keys are relative to
105
- * keys.<key_id>.keyed_pkg: path to a pkg file that has been signed
106
- * keys.<key_id>.password: password for the signed pkg
107
-
108
- The "input_mappings" section is optional but will allow you to override
109
- the default input mappings. In the section each key is a key press code. The
110
- value is a array with the desired command to run and a human readable key name.
111
- To see the key press code for a specific key the --navigate command can be run
112
- with the --debug option on to see a print out of all the keys pressed.
113
-
114
- #### Basic steps for creating a Roku channel/application package
115
-
116
- Official docs for packaging an application can be found [in the sdk](https://sdkdocs.roku.com/display/sdkdoc/Packaging+Your+Application), however the basic steps are:
117
-
118
- 1. Run the genkey utility to generate a key. This key will sign packages. This step only needs to be done once.
119
- 1. Add the key to your configuration file. This will also only need to be done once.
120
- 1. Run the package utility to generate package. This will create a .pkg file in /tmp.
121
-
122
- RokuBuilder makes running each of these steps easy, without needing to use the Roku device web interface or telnet.
123
-
124
- #### Projects and Stages
125
-
126
- The configuration for this gem allows you to define any number of projects and
127
- any number of stages for each project. It is intended that each app be defined
128
- as a project and then the stages for that project would allow you to define
129
- production/staging/etc. stages.
130
-
131
- There are two different ways that stages can be defined. You can use a script
132
- to define your stage. This gives you the greatest amount of freedom allowing
133
- you to setup your stage anyway you want. The other option is to use git
134
- staging. To do this you must have one branch for eash stage.
135
-
136
- The project used in the examples below is a smart default. If you are in a
137
- project directory then it will use that project. If you are not then it will
138
- use the defualt that you have defined in your config. You can define what
139
- project you want the command to be run on using the --project option:
140
-
141
- $ roku -lw --project project1
142
-
143
- or:
144
-
145
- $ roku -lw -P project1
146
-
147
- #### Commands and Sources
148
-
149
- There are several commands that require a source option to run properly. These
150
- include:
151
-
152
- * Sideload
153
- * Build
154
- * Package
155
- * Test
156
- * Key
157
-
158
- There are several source options that can be supplied to these commands. Which
159
- options you use will depend on the type of staging you are using and the app
160
- you are trying to run the command. The options are as follows:
161
-
162
- * --ref or -r
163
- * This option only works with git type staging. It will allow you to run a
164
- command on a specific git branch, tag, or referance.
165
- * --stage or -s
166
- * This option will work with either git or script staging. It allows you to
167
- sideload a specific stage. See below for more information. This is the
168
- only source option that you can use when packaging.
169
- * --working or -w
170
- * This option will work with git or script staging. It will use the project
171
- configs to determine the directory to use but will not run any staging
172
- method.
173
- * --current or -c
174
- * This option will ignore any project configurattion and just us the entire
175
- current directory.
176
- * --in or -I
177
- * This option allows you to pass in a zip file of an already built app.
178
-
179
- #### Staging
180
-
181
- It is usually a good idea to have multiple versions of your roku app. For
182
- example you could have a production and staging version of your app. RokuBuilder
183
- allows for this by using stages. There are two methods of staging, git, or
184
- script.
185
-
186
- If you choose to stage via git then for each stage you will define a git branch
187
- or ref. While staging (like durning packaging) RokuBuilder will stash all
188
- changes, checkout the defined branch, complete the requested action, checkout
189
- the orginal branch, and pop stashed changes.
190
-
191
- If you choose to use script staging then for each stage you will define a
192
- script to run that will change the app directory approiatly for that stage.
193
- You may also optionally define an unstage script that will return the directory
194
- to a clean working state. The script can be anything that will run in the
195
- project directory.
196
-
197
- A script staging example would be if you have a shell script (stage.sh) that
198
- append a config url in your manifest. You would have a different url for each
199
- stage:
200
-
201
- #! /bin/bash
202
- if [ "production" = $1 ]; then
203
- echo "url=https://prod.url.com" >> manifest
204
- else
205
- echo "url=https://staging.url.com" >> manifest
206
- fi
207
-
208
- You could also have a script (unstage.sh) that removed that last line:
209
-
210
- #! /bin/bash
211
- mv manifest manifest.tmp
212
- head -n -1 manifest.tmp > manifest
213
- rm manifest.tmp
214
-
215
- In your config you could have the following two stages assuming that these
216
- scripts were in the project root directory:
217
-
218
- "stages": {
219
- "prod": {
220
- "script": {"stage": "./stage.sh production", "unstage": "./unstage"}
221
- }
222
- "staging": {
223
- "script": {"stage": "./stage.sh staging", "unstage": "./unstage"}
224
- }
225
- }
226
-
227
- This would allow you to use the following two commands:
228
-
229
- $ roku -ls prod
230
- $ roku -ls staging
231
-
232
- This would sideload the app with the approiate url in the manifest.
233
-
234
- #### Sideloading
235
-
236
- You can sideload an app directly to the device using this gem. The gem will
237
- zip all of the configured files and upload it to the device and the remove the
238
- zip. You can do so with the following commands:
239
-
240
- $ roku --sideload --stage production
241
-
242
- or:
243
-
244
- $ roku -ls production
245
-
246
- When sideoading you can use any of the source options approiate to your staging
247
- method.
248
-
249
- #### Building
250
-
251
- You can build an app to be sideloaded later or by someone else by using the
252
- following command:
253
-
254
- $ roku --build --working
255
-
256
- or:
257
-
258
- $ roku -bw
259
-
260
- When bulding you can use any of the source options approiate to your staging
261
- method except the --in option.
262
-
263
- #### Generating a key
264
-
265
- Before you can package a channel, you must [generate a key](https://sdkdocs.roku.com/display/sdkdoc/Packaging+Your+Application#PackagingYourApplication-RunthegenkeyUtility)
266
- that is used to sign the package. This key is used to sign a new package and is
267
- also needed to sign a package when updating a channel.
268
-
269
- You can create a key by running the genkey command:
270
-
271
- $ roku --genkey
18
+ ## Quick Start Guide
272
19
 
273
- This will output the following data, all of which need to put in the `keys` section of `~/.roku_config.json`:
20
+ ### Sideloading
274
21
 
275
- * `Keyed PKG`: This is the signing key, used to sign new and updated packages
276
- * `Password`: Key's password
22
+ To sideload example or tutoral, switch to correct directory and run:
277
23
 
278
- #### Packaging
24
+ $ roku -lc
279
25
 
280
- To package an app you need to have at least on stage set up in your
281
- configuration file that has a key. Once you have that setup then you can run
282
- the following:
26
+ To sideload project, ensure [config](https://github.com/ViacomInc/roku_builder/wiki/Configuration#project-configuration) is setup and run:
283
27
 
284
- $ roku --package --stage production
285
-
286
- or:
287
-
288
- $ roku -ps production
289
-
290
- The package command will automatically [Rekey](https://github.com/rokudev/docs/blob/master/develop/guides/packaging.md#rekeying)
291
- your roku device before packaging the channel
292
-
293
- #### Monitoring Logs
294
-
295
- The tool has the ability to monitor the different development logs. You use
296
- the feature using the command --monitor and passing in the type of log you want
297
- to monitor. For example the following command will monitor the main
298
- brightscript log:
299
-
300
- $ roku --monitor main
301
-
302
- or:
303
- $ roku -m main
304
-
305
- or
306
-
307
- $ roku --monitor
308
-
309
- The following are the options to be passed in as type:
310
-
311
- * main
312
- * sg (depricated)
313
- * task1 (depricated)
314
- * task2 (depricated)
315
- * task3 (depricated)
316
- * taskX (depricated)
317
- * profile
318
-
319
- If no option is passed in then main log is monitored.
320
-
321
- The tool connects to the roku via telnet and prints everything that it
322
- recieves. It will continue indefinatly unless it is stopped via Ctrl-c or
323
- entering "q".
324
-
325
- The monitor tool also includes command history and some tab completeion.
326
-
327
- #### Interactive Navigation
328
-
329
- The gem has the ability to capture keyboard input and send it to the roku as
330
- remote inputs. This can be done by running the following command:
331
-
332
- $ roku --navigate
333
-
334
- Running in verbose mode will print out all of the key mappings avaiable. If you
335
- want to change these mappings you can do so via the input_mapping config values
336
- . To determine the codes needed to enter in the input_mapping config you can
337
- run the navigator in debug mode.
338
-
339
- #### Profiling Scene Graph
340
-
341
- The tool will help a little with profiling scenegraph applications. Running the
342
- following command will print a list of all of the currently created nodes
343
- types and how many of each are being created.
344
-
345
- $ roku --profile stats
346
-
347
- If you want to see more information about each node you can monitor the
348
- profile log (See Monitoring Logs above) and enter the following command:
349
-
350
- $ sgnodes all
351
-
352
- #### Testing
353
-
354
- There are a few tools that can be used for testing. The testing command will
355
- sideload the branch defined in the testing stage. It will then connect to the
356
- device via telnet and look for the following strings and prints everything
357
- inbetween them:
358
-
359
- Start delimiter: \*\*\*\*\* STARTING TESTS \*\*\*\*\*
360
-
361
- End delimiter: \*\*\*\*\* ENDING TESTS \*\*\*\*\*
362
-
363
- This is designed to be used with the brstest library. Ensure that if you use
364
- this that the app the prints out a sufficent number of lines after the tests
365
- are run otherwise it will just grab the test run from last time.
366
-
367
- Another tool for testing is the navigate command. You can use this to script
368
- navigation on the roku console. The command is used as follows:
369
-
370
- $ roku --nav <command>
371
-
372
- The possible commands are as follows:
373
-
374
- * up
375
- * down
376
- * right
377
- * left
378
- * select
379
- * back
380
- * home
381
- * rew
382
- * ff
383
- * play
384
- * replay
385
-
386
- There is also a command that will allow you to send text to the roku. It is
387
- used as follows:
388
-
389
- $ roku --type <text>
390
-
391
- #### Other Tools
392
-
393
- You can deeplink into your app using the following command:
394
-
395
- $ roku --deeplink-options "a:b c:d"
28
+ $ roku -lw
396
29
 
397
30
  or
398
31
 
399
- $ roku -o "a:b c:d"
400
-
401
- This will deeplink into the app sending the keypair values as defined in the
402
- string. You can also have the app sideloaded first by adding one of the
403
- source options (--working/-w, --current/-c, --ref/-r, or --stage/-s).
404
-
405
- You can delete the currently sideloaded app using the following command:
32
+ $ roku -ls <stage>
406
33
 
407
- $ roku --delete
34
+ ### Debugging
408
35
 
409
- You can use a differnt configuration file useing the following option:
36
+ To monitor debug log and interact with debugger run:
410
37
 
411
- $ roku --delete --config <path>
38
+ $ roku -m
412
39
 
413
- This path will be expanded so you do not have to use the full path
40
+ ### Packaging
414
41
 
415
- ## Devices
42
+ To package and app:
416
43
 
417
- In the examples above the device used is a smart default. It will use the
418
- default device defined in the configuration file. If that device is not online
419
- it will look start at the top and try each device until it findes an avaiable
420
- device. If you have multiple devices defined in your config then you can select
421
- a different one using the following option:
44
+ 1. Generate a key (Once):
422
45
 
423
- $ roku -lw --device device2
424
-
425
- or:
46
+ $ roku --genkey
426
47
 
427
- $ roku -lw -D device2
48
+ 1. Add key to (config)[https://github.com/ViacomInc/roku_builder/wiki/Configuration#key-configuration] (Once).
49
+ 1. Package channel:
428
50
 
51
+ $ roku -ps <stage>
429
52
 
430
53
  ## Documentation
431
54
 
@@ -437,9 +60,10 @@ directory:
437
60
 
438
61
  ## Improvements
439
62
 
440
- * Allow start and end delimiter for tests to be configured
441
63
  * Fix file naming when building from a referance
442
- * Extend profiling
64
+ * Add configuration option for build_version format
65
+ * Check if keying with bad password
66
+ * Check if missing key config when required
443
67
 
444
68
  ## Contributing
445
69