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
@@ -42,15 +42,6 @@ module RokuBuilder
42
42
  file.close
43
43
  end
44
44
 
45
- def update
46
- if @options[:build_version]
47
- update_package_config
48
- update_build_config
49
- update_sideload_config
50
- update_inspect_config
51
- end
52
- end
53
-
54
45
  def configure
55
46
  if @options[:configure]
56
47
  source_config = File.expand_path(File.join(File.dirname(__FILE__), "..", '..', 'config.json.example'))
@@ -65,6 +56,22 @@ module RokuBuilder
65
56
  end
66
57
  end
67
58
 
59
+ def root_dir=(root_dir)
60
+ @parsed[:root_dir] = root_dir
61
+ end
62
+
63
+ def in=(new_in)
64
+ @parsed[:in] = new_in
65
+ end
66
+
67
+ def out=(new_out)
68
+ @parsed[:out] = new_out
69
+ end
70
+
71
+ def method_missing(method)
72
+ @parsed[method]
73
+ end
74
+
68
75
  private
69
76
 
70
77
  def check_config_file
@@ -168,7 +175,7 @@ module RokuBuilder
168
175
  # Apply the changes in the options string to the config object
169
176
  def apply_options
170
177
  state = build_edit_state
171
- changes = Util.options_parse(options: @options[:edit_params])
178
+ changes = RokuBuilder.options_parse(options: @options[:edit_params])
172
179
  changes.each {|key,value|
173
180
  if [:ip, :user, :password].include?(key)
174
181
  @config[:devices][state[:device]][key] = value
@@ -179,35 +186,5 @@ module RokuBuilder
179
186
  end
180
187
  }
181
188
  end
182
-
183
- def update_package_config
184
- if @parsed[:package_config]
185
- @parsed[:package_config][:app_name_version] = "#{@parsed[:project_config][:app_name]} - #{@parsed[:stage]} - #{@options[:build_version]}"
186
- @parsed[:package_config][:out_file] = out_file_path
187
- end
188
- end
189
-
190
- def update_build_config
191
- @parsed[:build_config][:out_file] = out_file_path if @parsed[:build_config]
192
- end
193
-
194
- def update_sideload_config
195
- if @parsed[:sideload_config] and @options[:out]
196
- @parsed[:sideload_config][:out_file] = out_file_path
197
- end
198
- end
199
-
200
- def update_inspect_config
201
- if @parsed[:inspect_config] and @parsed[:package_config]
202
- @parsed[:inspect_config][:pkg] = @parsed[:package_config][:out_file]
203
- end
204
- end
205
-
206
- def out_file_path
207
- unless @parsed[:out][:file]
208
- @parsed[:out][:file] = "#{@parsed[:project_config][:app_name]}_#{@parsed[:stage]}_#{@options[:build_version]}"
209
- end
210
- File.join(@parsed[:out][:folder], @parsed[:out][:file])
211
- end
212
189
  end
213
190
  end
@@ -23,21 +23,12 @@ module RokuBuilder
23
23
  process_in_argument
24
24
  setup_device
25
25
  setup_project
26
- setup_outfile
26
+ setup_in_out_file
27
27
  setup_project_config
28
28
  setup_stage_config
29
- setup_sideload_config
30
- setup_package_config
31
- setup_monitor_configs
32
- setup_navigate_configs
33
- setup_manifest_config
34
- setup_deeplink_configs
35
- setup_text_configs
36
- setup_test_configs
37
- setup_screencapture_configs
38
- setup_screen_config
39
- setup_profiler_configs
40
- setup_genkey_configs
29
+ setup_key_config
30
+ setup_root_dir
31
+ setup_input_mappings
41
32
  end
42
33
 
43
34
  def process_in_argument
@@ -63,7 +54,7 @@ module RokuBuilder
63
54
 
64
55
  def project_required
65
56
  non_project_source = ([:current, :in] & @options.keys).count > 0
66
- @options.source_command? and not non_project_source
57
+ @options.has_source? and not non_project_source
67
58
  end
68
59
 
69
60
  def current_project
@@ -89,28 +80,30 @@ module RokuBuilder
89
80
  end
90
81
  end
91
82
 
92
- def setup_outfile
93
- @parsed[:out] = {file: nil, folder: nil}
94
- if @options[:out]
95
- if out_file_defined?
96
- setup_outfile_and_folder
97
- else
98
- @parsed[:out][:folder] = @options[:out]
83
+ def setup_in_out_file
84
+ [:in, :out].each do |type|
85
+ @parsed[type] = {file: nil, folder: nil}
86
+ if @options[type]
87
+ if file_defined?(type)
88
+ setup_file_and_folder(type)
89
+ elsif @options[type]
90
+ @parsed[type][:folder] = File.expand_path(@options[type])
91
+ end
99
92
  end
100
93
  end
101
94
  set_default_outfile
102
95
  end
103
96
 
104
- def out_file_defined?
105
- @options[:out].end_with?(".zip") or @options[:out].end_with?(".pkg") or @options[:out].end_with?(".jpg")
97
+ def file_defined?(type)
98
+ @options[type].end_with?(".zip") or @options[type].end_with?(".pkg") or @options[type].end_with?(".jpg")
106
99
  end
107
100
 
108
- def setup_outfile_and_folder
109
- @parsed[:out][:folder], @parsed[:out][:file] = Pathname.new(@options[:out]).split.map{|p| p.to_s}
110
- if @parsed[:out][:folder] == "." and not @options[:out].start_with?(".")
111
- @parsed[:out][:folder] = nil
101
+ def setup_file_and_folder(type)
102
+ @parsed[type][:folder], @parsed[type][:file] = Pathname.new(@options[type]).split.map{|p| p.to_s}
103
+ if @parsed[type][:folder] == "." and not @options[type].start_with?(".")
104
+ @parsed[type][:folder] = nil
112
105
  else
113
- @parsed[:out][:folder] = File.expand_path(@parsed[:out][:folder])
106
+ @parsed[type][:folder] = File.expand_path(@parsed[type][:folder])
114
107
  end
115
108
  end
116
109
 
@@ -124,8 +117,8 @@ module RokuBuilder
124
117
  if @options[:current]
125
118
  stub_project_config_for_current
126
119
  elsif project_required
127
- @parsed[:project_config] = @config[:projects][@options[:project].to_sym]
128
- raise ParseError, "Unknown Project: #{@options[:project]}" unless @parsed[:project_config]
120
+ @parsed[:project] = @config[:projects][@options[:project].to_sym]
121
+ raise ParseError, "Unknown Project: #{@options[:project]}" unless @parsed[:project]
129
122
  set_project_directory
130
123
  check_for_working
131
124
  end
@@ -133,8 +126,9 @@ module RokuBuilder
133
126
 
134
127
  def stub_project_config_for_current
135
128
  pwd = Pathname.pwd.to_s
136
- raise ParseError, "Missing Manifest" unless File.exist?(File.join(pwd, "manifest"))
137
- @parsed[:project_config] = {
129
+ manifest = File.join(pwd, "manifest")
130
+ raise ParseError, "Missing Manifest: #{manifest}" unless File.exist?(manifest)
131
+ @parsed[:project] = {
138
132
  directory: pwd,
139
133
  folders: nil,
140
134
  files: nil,
@@ -144,99 +138,33 @@ module RokuBuilder
144
138
 
145
139
  def set_project_directory
146
140
  if @config[:projects][:project_dir]
147
- @parsed[:project_config][:directory] = File.join(@config[:projects][:project_dir], @parsed[:project_config][:directory])
141
+ @parsed[:project][:directory] = File.join(@config[:projects][:project_dir], @parsed[:project][:directory])
148
142
  end
149
- unless Dir.exist?(@parsed[:project_config][:directory])
150
- raise ParseError, "Missing project dirtectory: #{@parsed[:project_config][:dirtectory]}"
143
+ unless Dir.exist?(@parsed[:project][:directory])
144
+ raise ParseError, "Missing project directory: #{@parsed[:project][:directory]}"
151
145
  end
152
146
  end
153
147
 
154
148
  def check_for_working
155
- @parsed[:project_config][:stage_method] = :working if @options[:working]
149
+ @parsed[:project][:stage_method] = :working if @options[:working]
156
150
  end
157
151
 
158
152
 
159
153
  def setup_stage_config
160
- setup_mininal_stage_configs
161
- setup_project_stage_config if project_required
162
- end
163
-
164
- def setup_mininal_stage_configs
165
- @parsed[:stage_config] = {}
166
- @parsed[:stage_config][:method] = ([:in, :current] & @options.keys).first
167
- @parsed[:stage] = @options[:stage].to_sym if @options[:stage]
168
- end
169
-
170
- def setup_project_stage_config
171
- @parsed[:stage] ||= @parsed[:project_config][:stages].keys[0].to_sym
172
- @parsed[:stage_config][:root_dir] = @parsed[:project_config][:directory]
173
- raise ParseError, "Unknown Stage: #{@parsed[:stage]}" unless @parsed[:project_config][:stages][@parsed[:stage]]
174
- setup_staging_method
175
- setup_staging_key
176
- end
177
-
178
- def setup_staging_method
179
- @parsed[:stage_config][:method] = @parsed[:project_config][:stage_method]
180
- unless [:git, :script, :current, :working].include? @parsed[:stage_config][:method]
181
- raise ParseError, "Unknown Stage Method: #{@parsed[:stage_config][:method]}"
182
- end
183
- end
184
-
185
- def setup_staging_key
186
- case @parsed[:stage_config][:method]
187
- when :git
188
- if @options[:ref]
189
- @parsed[:stage_config][:key] = @options[:ref]
190
- else
191
- @parsed[:stage_config][:key] = @parsed[:project_config][:stages][@parsed[:stage]][:branch]
192
- end
193
- when :script
194
- @parsed[:stage_config][:key] = @parsed[:project_config][:stages][@parsed[:stage]][:script]
195
- end
196
- end
197
-
198
- def setup_sideload_config
199
- root_dir, content = setup_project_values
200
- # Create Sideload Config
201
- @parsed[:sideload_config] = {
202
- update_manifest: @options[:update_manifest],
203
- infile: @options[:in],
204
- content: content
205
- }
206
- # Create Build Config
207
- @parsed[:build_config] = { content: content }
208
- @parsed[:init_params][:loader] = { root_dir: root_dir }
209
- end
210
-
211
- def setup_project_values
212
- if @parsed[:project_config]
213
- root_dir = @parsed[:project_config][:directory]
214
- content = {
215
- folders: @parsed[:project_config][:folders],
216
- files: @parsed[:project_config][:files],
217
- }
218
- content[:excludes] = @parsed[:project_config][:excludes] if add_excludes?
219
- [root_dir, content]
220
- else
221
- [nil, nil]
222
- end
223
- end
224
-
225
- def add_excludes?
226
- @options[:exclude] or @options.exclude_command?
227
- end
228
-
229
- def setup_package_config
230
- setup_key_config if @options[:package] or @options[:key]
231
- if @options[:package]
232
- setup_package_config_hashes
233
- setup_package_config_out_files
154
+ if project_required
155
+ stage = @options[:stage].to_sym if @options[:stage]
156
+ stage ||= @parsed[:project][:stages].keys[0].to_sym
157
+ raise ParseError, "Unknown Stage: #{stage}" unless @parsed[:project][:stages][stage]
158
+ @parsed[:stage] = @parsed[:project][:stages][stage]
234
159
  end
235
160
  end
236
161
 
237
162
  def setup_key_config
238
- @parsed[:key] = @parsed[:project_config][:stages][@parsed[:stage]][:key]
239
- get_global_key_config if @parsed[:key].class == String
163
+ if @parsed[:stage]
164
+ @parsed[:key] = @parsed[:stage][:key]
165
+ get_global_key_config if @parsed[:key].class == String
166
+ test_key_file
167
+ end
240
168
  end
241
169
 
242
170
  def get_global_key_config
@@ -245,106 +173,27 @@ module RokuBuilder
245
173
  if @config[:keys][:key_dir]
246
174
  @parsed[:key][:keyed_pkg] = File.join(@config[:keys][:key_dir], @parsed[:key][:keyed_pkg])
247
175
  end
248
- unless File.exist?(@parsed[:key][:keyed_pkg])
249
- raise ParseError, "Bad key file: #{@parsed[:key][:keyed_pkg]}"
250
- end
251
176
  end
252
177
 
253
- def setup_package_config_hashes
254
- @parsed[:package_config] = {
255
- password: @parsed[:key][:password],
256
- app_name_version: "#{@parsed[:project_config][:app_name]} - #{@parsed[:stage]}"
257
- }
258
- @parsed[:inspect_config] = {
259
- password: @parsed[:key][:password]
260
- }
261
- end
262
-
263
- def setup_package_config_out_files
264
- if @parsed[:out][:file]
265
- @parsed[:package_config][:out_file] = File.join(@parsed[:out][:folder], @parsed[:out][:file])
266
- @parsed[:inspect_config][:pkg] = File.join(@parsed[:out][:folder], @parsed[:out][:file])
267
- end
268
- end
269
-
270
- def setup_monitor_configs
271
- if @options[:monitor]
272
- @parsed[:monitor_config] = {type: @options[:monitor].to_sym}
273
- if @options[:regexp]
274
- @parsed[:monitor_config][:regexp] = /#{@options[:regexp]}/
275
- end
276
- end
277
- end
278
-
279
- def setup_navigate_configs
280
- @parsed[:init_params][:navigator] = {mappings: generate_maggings}
281
- if @options[:navigate]
282
- @parsed[:navigate_config] = {
283
- commands: @options[:navigate].split(/, */).map{|c| c.to_sym}
284
- }
285
- end
286
- end
287
-
288
- def generate_maggings
289
- mappings = {}
290
- if @config[:input_mapping]
291
- @config[:input_mapping].each_pair {|key, value|
292
- unless "".to_sym == key
293
- key = key.to_s.sub(/\\e/, "\e").to_sym
294
- mappings[key] = value
295
- end
296
- }
178
+ def test_key_file
179
+ unless File.exist?(@parsed[:key][:keyed_pkg])
180
+ raise ParseError, "Bad key file: #{@parsed[:key][:keyed_pkg]}"
297
181
  end
298
- mappings
299
182
  end
300
183
 
301
- def setup_manifest_config
302
- @parsed[:manifest_config] = {
303
- root_dir: get_root_dir
304
- }
184
+ def setup_root_dir
185
+ @parsed[:root_dir] = get_root_dir
305
186
  end
306
187
 
307
188
  def get_root_dir
308
- root_dir = @parsed[:project_config][:directory] if @parsed[:project_config]
189
+ root_dir = @parsed[:project][:directory] if @parsed[:project]
309
190
  root_dir = @options[:in] if @options[:in]
310
191
  root_dir = Pathname.pwd.to_s if @options[:current]
311
192
  root_dir
312
- end if
313
-
314
- def setup_deeplink_configs
315
- @parsed[:deeplink_config] = {options: @options[:deeplink]}
316
- if @options[:app_id]
317
- @parsed[:deeplink_config][:app_id] = @options[:app_id]
318
- end
319
- end
320
- def setup_text_configs
321
- @parsed[:text_config] = {text: @options[:text]}
322
- end
323
- def setup_test_configs
324
- @parsed[:test_config] = {sideload_config: @parsed[:sideload_config]}
325
- @parsed[:init_params][:tester] = { root_dir: get_root_dir }
326
- end
327
- def setup_screencapture_configs
328
- @parsed[:screencapture_config] = {
329
- out_folder: @parsed[:out][:folder],
330
- out_file: @parsed[:out][:file]
331
- }
332
- end
333
- def setup_screen_config
334
- if @options[:screen]
335
- @parsed[:screen_config] = {type: @options[:screen].to_sym}
336
- end
337
193
  end
338
- def setup_profiler_configs
339
- if @options[:profile]
340
- @parsed[:profiler_config] = {command: @options[:profile].to_sym}
341
- end
342
- end
343
- def setup_genkey_configs
344
- @parsed[:genkey] = {}
345
- if @options[:out_file]
346
- @parsed[:genkey][:out_file] = File.join(@options[:out_folder], @options[:out_file])
347
- end
194
+
195
+ def setup_input_mappings
196
+ @parsed[:input_mappings] = @config[:input_mappings]
348
197
  end
349
198
  end
350
199
  end
@@ -62,7 +62,7 @@ module RokuBuilder
62
62
  def validate_config
63
63
  @codes = []
64
64
  validate_structure
65
- [:projects, :devices, :keys, :input_mapping].each do |section|
65
+ [:projects, :devices, :keys, :input_mappings].each do |section|
66
66
  validate_section(section: section) if @config[section]
67
67
  end
68
68
  @codes.uniq!
@@ -9,4 +9,16 @@ module RokuBuilder
9
9
 
10
10
  class InvalidOptions < StandardError
11
11
  end
12
+
13
+ class ManifestError < StandardError
14
+ end
15
+
16
+ class DeviceError < StandardError
17
+ end
18
+
19
+ class ExecutionError < StandardError
20
+ end
21
+
22
+ class ImplementationError < StandardError
23
+ end
12
24
  end
@@ -0,0 +1,28 @@
1
+ # ********** Copyright 2016 Viacom, Inc. Apache 2.0 **********
2
+
3
+ module Git
4
+ class Stashes
5
+ def pop(index=nil)
6
+ @base.lib.stash_pop(index)
7
+ end
8
+ def drop(index=nil)
9
+ @base.lib.stash_drop(index)
10
+ end
11
+ end
12
+ class Lib
13
+ def stash_pop(id = nil)
14
+ if id
15
+ command('stash pop', [id])
16
+ else
17
+ command('stash pop')
18
+ end
19
+ end
20
+ def stash_drop(id = nil)
21
+ if id
22
+ command('stash drop', [id])
23
+ else
24
+ command('stash drop')
25
+ end
26
+ end
27
+ end
28
+ end