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