Skip to content

Commit

Permalink
Implement navigator as a plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
greeneca committed Jun 1, 2017
1 parent 0474744 commit 1133923
Show file tree
Hide file tree
Showing 10 changed files with 281 additions and 241 deletions.
21 changes: 10 additions & 11 deletions lib/roku_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,12 @@ def self.run
end

def self.plugins
@@plugins ||= {}
@@plugins ||= []
end

def self.register_plugin(klass:, name:)
@@plugins ||= {}
raise ImplementationError, "Duplicate plugin names" if @@plugins[name]
@@plugins[name] = klass
def self.register_plugin(plugin)
@@plugins ||= []
@@plugins << plugin
end

def self.setup_plugins
Expand All @@ -73,13 +72,13 @@ def self.load_plugins
end

def self.process_plugins
@@plugins ||= {}
unless @@plugins.count == @@plugins.values.uniq.count
raise ImplementationError, "Duplicate plugin classes"
@@plugins ||= []
unless @@plugins.count == @@plugins.uniq.count
raise ImplementationError, "Duplicate plugins"
end
@@plugins.each_value do |klass|
klass.dependencies.each do |name|
raise ImplementationError, "Missing dependency: #{name}" unless @@plugins[name]
@@plugins.each do |plugin|
plugin.dependencies.each do |dependency|
raise ImplementationError, "Missing dependency: #{dependency}" unless @@plugins.include?(dependency)
end
end
end
Expand Down
30 changes: 0 additions & 30 deletions lib/roku_builder/config_parser.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,11 @@ def parse_config
setup_sideload_config
setup_package_config
setup_monitor_configs
setup_navigate_configs
setup_manifest_config
setup_deeplink_configs
setup_text_configs
setup_test_configs
setup_screencapture_configs
setup_screen_config
setup_profiler_configs
setup_genkey_configs
end
Expand Down Expand Up @@ -264,35 +262,12 @@ def setup_monitor_configs
end
end

def setup_navigate_configs
@parsed[:init_params][:navigator] = {mappings: generate_maggings}
if @options[:navigate]
@parsed[:navigate_config] = {
commands: @options[:navigate].split(/, */).map{|c| c.to_sym}
}
end
end

def generate_maggings
mappings = {}
if @config[:input_mapping]
@config[:input_mapping].each_pair {|key, value|
unless "".to_sym == key
key = key.to_s.sub(/\\e/, "\e").to_sym
mappings[key] = value
end
}
end
mappings
end

def setup_manifest_config
@parsed[:manifest_config] = {
root_dir: get_root_dir
}
end


def setup_deeplink_configs
@parsed[:deeplink_config] = {options: @options[:deeplink]}
if @options[:app_id]
Expand All @@ -312,11 +287,6 @@ def setup_screencapture_configs
out_file: @parsed[:out][:file]
}
end
def setup_screen_config
if @options[:screen]
@parsed[:screen_config] = {type: @options[:screen].to_sym}
end
end
def setup_profiler_configs
if @options[:profile]
@parsed[:profiler_config] = {command: @options[:profile].to_sym}
Expand Down
6 changes: 3 additions & 3 deletions lib/roku_builder/options.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def has_source?
private

def setup_plugin_commands
RokuBuilder.plugins.each_value do |plugin|
RokuBuilder.plugins.each do |plugin|
plugin.commands.each do |command, attributes|
commands << command
[:device, :source, :exclude].each do |type|
Expand Down Expand Up @@ -132,8 +132,8 @@ def build_parser(options:)
end

def add_plugin_options(parser:, options:)
RokuBuilder.plugins.each_value do |plugin|
plugin.parse_options(options_parser: parser, options: options)
RokuBuilder.plugins.each do |plugin|
plugin.parse_options(parser: parser, options: options)
end
end

Expand Down
Loading

0 comments on commit 1133923

Please sign in to comment.