class Chino::DepPuller
dependency puller
Constants
- NIL_DRIVER
Public Class Methods
new()
click to toggle source
# File lib/chino/dep_puller.rb, line 12 def initialize @dependencies = {} end
Public Instance Methods
dependency(file)
click to toggle source
# File lib/chino/dep_puller.rb, line 34 def dependency(file) depname = name_for_dependency(file) return NIL_DRIVER unless @dependencies.key?(depname) @dependencies[depname].values.first end
dependency_has_file?(file)
click to toggle source
# File lib/chino/dep_puller.rb, line 49 def dependency_has_file?(file) dependency(file).exist?(file) end
get_from_dependency(file)
click to toggle source
# File lib/chino/dep_puller.rb, line 45 def get_from_dependency(file) dependency(file).load_file(file) end
load_dependency!(dep)
click to toggle source
# File lib/chino/dep_puller.rb, line 16 def load_dependency!(dep) const_name = "#{dep[:driver].camelize}Driver" raise "No such driver '#{dep[:driver]}'" unless Drivers.const_defined?(const_name) driver_class = Drivers.const_get(const_name) driver = driver_class.new(dep) name = driver.name version = driver.version return unless @dependencies.dig(name, version).nil? @dependencies[name] ||= {} @dependencies[name][version] = driver driver.inner_deps.each do |inner_dep| load_dependency!(inner_dep) end end
name_for_dependency(file)
click to toggle source
# File lib/chino/dep_puller.rb, line 41 def name_for_dependency(file) file.split('/').first end