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
@@ -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