module LearnOpen module DependencyInstallers class BaseInstaller attr_reader :lesson, :location, :system_adapter, :io, :environment def self.call(lesson, location, environment, options) if self.detect(lesson, location) self.new(lesson, location, environment, options).run end end def initialize(lesson, location, environment, options) @lesson = lesson @location = location @environment = environment @system_adapter = options.fetch(:system_adapter, LearnOpen.system_adapter) @io = options.fetch(:io, LearnOpen.default_io) end end end end