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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG +12 -0
- data/Gemfile.lock +22 -7
- data/Guardfile +3 -3
- data/README.md +22 -398
- data/bin/roku +1 -194
- data/config.json.example +1 -1
- data/intergration/roku_builder/test_core.rb +52 -0
- data/intergration/roku_builder/test_files/core_intergration_test/manifest_template +7 -0
- data/intergration/roku_builder/test_files/core_intergration_test/test.pkg +0 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/components/rectanglescene.xml +28 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_splash_fhd.jpg +0 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_splash_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/images/rsgde_bg_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/images/rsgde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/manifest +21 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/source/main.brs +23 -0
- data/intergration/roku_builder/test_files/inspector_intergration_test/test.pkg +0 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/components/rectanglescene.xml +29 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_splash_fhd.jpg +0 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_splash_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/images/rsgde_bg_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/images/rsgde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/manifest +21 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/source/main.brs +21 -0
- data/intergration/roku_builder/test_files/linker_intergration_test/test.pkg +0 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/components/rectanglescene.xml +29 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_splash_fhd.jpg +0 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_splash_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/images/rsgde_bg_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/images/rsgde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/manifest +21 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/source/main.brs +21 -0
- data/intergration/roku_builder/test_files/loader_intergration_test/test.pkg +0 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/components/rectanglescene.xml +29 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_splash_fhd.jpg +0 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_splash_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/images/rsgde_bg_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/images/rsgde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/manifest +21 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/source/main.brs +21 -0
- data/intergration/roku_builder/test_files/monitor_intergration_test/test.pkg +0 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/components/rectanglescene.xml +29 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_splash_fhd.jpg +0 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_splash_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/images/rsgde_bg_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/images/rsgde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/manifest +21 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/source/main.brs +21 -0
- data/intergration/roku_builder/test_files/navigator_intergration_test/test.pkg +0 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/components/rectanglescene.xml +29 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_splash_fhd.jpg +0 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_splash_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/images/rsgde_bg_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/images/rsgde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/manifest +21 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/source/main.brs +21 -0
- data/intergration/roku_builder/test_files/packager_intergration_test/test.pkg +0 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/components/rectanglescene.xml +29 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_splash_fhd.jpg +0 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_splash_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/images/rsgde_bg_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/images/rsgde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/manifest +21 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/source/main.brs +21 -0
- data/intergration/roku_builder/test_files/profiler_intergration_test/test.pkg +0 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/components/rectanglescene.xml +29 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_splash_fhd.jpg +0 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_splash_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/images/rsgde_bg_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/images/rsgde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/manifest +21 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/source/main.brs +21 -0
- data/intergration/roku_builder/test_files/scripter_intergration_test/test.pkg +0 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/components/rectanglescene.xml +29 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_splash_fhd.jpg +0 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_splash_sd.jpg +0 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/images/rsgde_bg_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/images/rsgde_splash_hd.jpg +0 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/manifest +21 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/source/main.brs +21 -0
- data/intergration/roku_builder/test_files/tester_intergration_test/test.pkg +0 -0
- data/intergration/roku_builder/test_helper.rb +138 -0
- data/intergration/roku_builder/test_inspector.rb +35 -0
- data/intergration/roku_builder/test_linker.rb +32 -0
- data/intergration/roku_builder/test_loader.rb +38 -0
- data/intergration/roku_builder/test_monitor.rb +21 -0
- data/intergration/roku_builder/test_navigator.rb +34 -0
- data/intergration/roku_builder/test_packager.rb +41 -0
- data/intergration/roku_builder/test_profiler.rb +48 -0
- data/intergration/roku_builder/test_scripter.rb +38 -0
- data/intergration/roku_builder/test_tester.rb +21 -0
- data/lib/roku_builder.rb +143 -154
- data/lib/roku_builder/config.rb +17 -40
- data/lib/roku_builder/config_parser.rb +49 -200
- data/lib/roku_builder/config_validator.rb +1 -1
- data/lib/roku_builder/errors.rb +12 -0
- data/lib/roku_builder/git.rb +28 -0
- data/lib/roku_builder/hash.rb +8 -0
- data/lib/roku_builder/manifest.rb +121 -0
- data/lib/roku_builder/options.rb +68 -29
- data/lib/roku_builder/plugin.rb +30 -0
- data/lib/roku_builder/plugins/core.rb +117 -0
- data/lib/roku_builder/plugins/inspector.rb +104 -0
- data/lib/roku_builder/{linker.rb → plugins/linker.rb} +38 -12
- data/lib/roku_builder/plugins/loader.rb +152 -0
- data/lib/roku_builder/{monitor.rb → plugins/monitor.rb} +20 -9
- data/lib/roku_builder/{navigator.rb → plugins/navigator.rb} +136 -88
- data/lib/roku_builder/plugins/packager.rb +194 -0
- data/lib/roku_builder/plugins/profiler.rb +135 -0
- data/lib/roku_builder/plugins/scripter.rb +53 -0
- data/lib/roku_builder/{tester.rb → plugins/tester.rb} +28 -19
- data/lib/roku_builder/stager.rb +48 -12
- data/lib/roku_builder/string.rb +20 -0
- data/lib/roku_builder/util.rb +10 -34
- data/lib/roku_builder/version.rb +1 -1
- data/rakefile +5 -1
- data/roku_builder.gemspec +2 -0
- data/test/roku_builder/plugins/test_core.rb +112 -0
- data/test/roku_builder/plugins/test_inspector.rb +165 -0
- data/test/roku_builder/plugins/test_linker.rb +123 -0
- data/test/roku_builder/plugins/test_loader.rb +115 -0
- data/test/roku_builder/plugins/test_monitor.rb +141 -0
- data/test/roku_builder/plugins/test_navigator.rb +274 -0
- data/test/roku_builder/plugins/test_packager.rb +202 -0
- data/test/roku_builder/plugins/test_profiler.rb +127 -0
- data/test/roku_builder/plugins/test_scripter.rb +110 -0
- data/test/roku_builder/plugins/test_tester.rb +109 -0
- data/test/roku_builder/test_config.rb +51 -35
- data/test/roku_builder/test_config_parser.rb +76 -154
- data/test/roku_builder/test_config_validator.rb +18 -1
- data/test/roku_builder/test_files/{loader_test/manifest → config_parser_test/test.pkg} +0 -0
- data/test/roku_builder/test_files/config_test/config.json +3 -0
- data/test/roku_builder/test_files/controller_commands_test/manifest_template +7 -0
- data/test/roku_builder/test_files/core_test/manifest_template +7 -0
- data/test/roku_builder/test_files/core_test/test.pkg +0 -0
- data/test/roku_builder/test_files/inspector_test/manifest +6 -0
- data/test/roku_builder/test_files/inspector_test/test.pkg +0 -0
- data/test/roku_builder/test_files/linker_test/manifest +6 -0
- data/test/roku_builder/test_files/linker_test/test.pkg +0 -0
- data/test/roku_builder/test_files/loader_test/manifest_template +6 -0
- data/test/roku_builder/test_files/loader_test/test.pkg +0 -0
- data/test/roku_builder/test_files/loader_test/test.zip +0 -0
- data/test/roku_builder/test_files/manifest_test/manifest_comments +6 -0
- data/test/roku_builder/test_files/manifest_test/manifest_template +7 -0
- data/test/roku_builder/test_files/manifest_test/test.zip +0 -0
- data/test/roku_builder/test_files/packager_test/manifest +6 -0
- data/test/roku_builder/test_files/packager_test/scripter_test/manifest +6 -0
- data/test/roku_builder/test_files/packager_test/test.pkg +0 -0
- data/test/roku_builder/test_files/roku_builder_test/config.json +32 -0
- data/test/roku_builder/test_files/scripter_test/manifest +6 -0
- data/test/roku_builder/test_files/scripter_test/test.pkg +0 -0
- data/test/roku_builder/test_files/stager_test/test.pkg +0 -0
- data/test/roku_builder/test_files/tester_test/manifest +6 -0
- data/test/roku_builder/test_files/tester_test/test.pkg +0 -0
- data/test/roku_builder/test_helper.rb +44 -11
- data/test/roku_builder/test_logger.rb +1 -0
- data/test/roku_builder/test_manifest.rb +99 -0
- data/test/roku_builder/test_options.rb +106 -77
- data/test/roku_builder/test_options_plugins.rb +111 -0
- data/test/roku_builder/test_plugin.rb +48 -0
- data/test/roku_builder/test_roku_builder.rb +239 -0
- data/test/roku_builder/test_stager.rb +49 -101
- data/test/roku_builder/test_util.rb +19 -4
- metadata +241 -47
- data/lib/roku_builder/controller.rb +0 -98
- data/lib/roku_builder/controller_commands.rb +0 -224
- data/lib/roku_builder/error_handler.rb +0 -142
- data/lib/roku_builder/inspector.rb +0 -82
- data/lib/roku_builder/keyer.rb +0 -106
- data/lib/roku_builder/loader.rb +0 -131
- data/lib/roku_builder/manifest_manager.rb +0 -126
- data/lib/roku_builder/packager.rb +0 -43
- data/lib/roku_builder/profiler.rb +0 -96
- data/lib/roku_builder/scripter.rb +0 -39
- data/test/roku_builder/test_controller.rb +0 -70
- data/test/roku_builder/test_controller_commands.rb +0 -465
- data/test/roku_builder/test_error_handler.rb +0 -90
- data/test/roku_builder/test_inspector.rb +0 -298
- data/test/roku_builder/test_keyer.rb +0 -176
- data/test/roku_builder/test_linker.rb +0 -110
- data/test/roku_builder/test_loader.rb +0 -337
- data/test/roku_builder/test_manifest_manager.rb +0 -103
- data/test/roku_builder/test_monitor.rb +0 -137
- data/test/roku_builder/test_navigator.rb +0 -280
- data/test/roku_builder/test_packager.rb +0 -127
- data/test/roku_builder/test_profiler.rb +0 -35
- data/test/roku_builder/test_scripter.rb +0 -102
- data/test/roku_builder/test_tester.rb +0 -130
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20601e921fb6a11cbb6bdba633e4aa54a3e94343
|
4
|
+
data.tar.gz: 66bb11a717dcac6324d27a930fb964edbab0057d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d0e9288d2038d9c0b9d4b24f3d15bdfd02552f2c5c454edff8d9b6edb99855a56ffd1a182aaf7e12f7fa46047305e56ad20633ea268bb6f45e6bf829941bca5
|
7
|
+
data.tar.gz: 25d90e11fbfa33b52eeeb2300137c0f1b4d93afe421e228afbc32189035ab4184bb682c02726380198e19e3f0f86b05fd740171265a50f437c79297649f382d2
|
data/.travis.yml
CHANGED
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 (
|
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.
|
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.
|
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.
|
71
|
-
mini_portile2 (~> 2.
|
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.
|
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.
|
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
|
25
|
-
watch(%r{^
|
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
|
10
|
-
|
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
|
-
##
|
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
|
-
|
20
|
+
### Sideloading
|
274
21
|
|
275
|
-
|
276
|
-
* `Password`: Key's password
|
22
|
+
To sideload example or tutoral, switch to correct directory and run:
|
277
23
|
|
278
|
-
|
24
|
+
$ roku -lc
|
279
25
|
|
280
|
-
To
|
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
|
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 -
|
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
|
-
|
34
|
+
### Debugging
|
408
35
|
|
409
|
-
|
36
|
+
To monitor debug log and interact with debugger run:
|
410
37
|
|
411
|
-
$ roku
|
38
|
+
$ roku -m
|
412
39
|
|
413
|
-
|
40
|
+
### Packaging
|
414
41
|
|
415
|
-
|
42
|
+
To package and app:
|
416
43
|
|
417
|
-
|
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
|
424
|
-
|
425
|
-
or:
|
46
|
+
$ roku --genkey
|
426
47
|
|
427
|
-
|
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
|
-
*
|
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
|
|