roku_builder 3.13.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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