class GitCommander::Plugin::Loader
@abstract Handles loading native plugins by name.
Constants
- NATIVE_PLUGIN_DIR
Attributes
commands[R]
content[R]
name[R]
Public Class Methods
new(registry)
click to toggle source
Calls superclass method
GitCommander::Loader::new
# File lib/git_commander/plugin/loader.rb, line 17 def initialize(registry) @commands = [] super end
Public Instance Methods
command(name, &block)
click to toggle source
# File lib/git_commander/plugin/loader.rb, line 51 def command(name, &block) GitCommander.logger.debug("Loading command :#{name} from plugin #{@name}") @commands << Command::Configurator.new(registry).configure("#{plugin_name_formatted_for_cli}:#{name}".to_sym, &block) rescue Command::Configurator::ConfigurationError => e result.errors << e end
load(name)
click to toggle source
# File lib/git_commander/plugin/loader.rb, line 22 def load(name) @plugin = GitCommander::Plugin.new( resolve_plugin_name(name), source_instance: instance_eval(resolve_content(name)) ) @plugin.commands = @commands result.plugins << @plugin result.commands |= @commands result rescue Errno::ENOENT, Errno::EACCES => e handle_error LoadError, e rescue StandardError => e handle_error NotFoundError, e end
plugin(name, **options)
click to toggle source
# File lib/git_commander/plugin/loader.rb, line 58 def plugin(name, **options) plugin_result = GitCommander::Plugin::Loader.new(registry).load(name, **options) result.plugins |= plugin_result.plugins end
resolve_content(native_name_or_filename)
click to toggle source
# File lib/git_commander/plugin/loader.rb, line 43 def resolve_content(native_name_or_filename) if native_name_or_filename.is_a? Symbol return @content = File.read("#{NATIVE_PLUGIN_DIR}/#{native_name_or_filename}.rb") end @content = File.read(native_name_or_filename) end
resolve_plugin_name(native_name_or_filename)
click to toggle source
# File lib/git_commander/plugin/loader.rb, line 37 def resolve_plugin_name(native_name_or_filename) return @name = native_name_or_filename if native_name_or_filename.is_a? Symbol @name = File.basename(native_name_or_filename).split(".").first.to_sym end
Private Instance Methods
handle_error(error_klass, original_error)
click to toggle source
# File lib/git_commander/plugin/loader.rb, line 69 def handle_error(error_klass, original_error) error = error_klass.new(original_error.message) error.set_backtrace original_error.backtrace @result.errors << error @result end
plugin_name_formatted_for_cli()
click to toggle source
# File lib/git_commander/plugin/loader.rb, line 65 def plugin_name_formatted_for_cli @name.to_s.gsub("_", "-").to_sym end