Class: Chino::DepPuller
- Inherits:
-
Object
- Object
- Chino::DepPuller
- Defined in:
- lib/chino/dep_puller.rb
Overview
dependency puller
Constant Summary collapse
- NIL_DRIVER =
Chino::Drivers::BaseDriver.new(nil)
Instance Method Summary collapse
- #dependency(file) ⇒ Object
- #dependency_has_file?(file) ⇒ Boolean
- #get_from_dependency(file) ⇒ Object
-
#initialize ⇒ DepPuller
constructor
A new instance of DepPuller.
- #load_dependency!(dep) ⇒ Object
- #name_for_dependency(file) ⇒ Object
Constructor Details
#initialize ⇒ DepPuller
Returns a new instance of DepPuller.
12 13 14 |
# File 'lib/chino/dep_puller.rb', line 12 def initialize @dependencies = {} end |
Instance Method Details
#dependency(file) ⇒ Object
34 35 36 37 38 39 |
# 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) ⇒ Boolean
49 50 51 |
# File 'lib/chino/dep_puller.rb', line 49 def dependency_has_file?(file) dependency(file).exist?(file) end |
#get_from_dependency(file) ⇒ Object
45 46 47 |
# File 'lib/chino/dep_puller.rb', line 45 def get_from_dependency(file) dependency(file).load_file(file) end |
#load_dependency!(dep) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# 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) ⇒ Object
41 42 43 |
# File 'lib/chino/dep_puller.rb', line 41 def name_for_dependency(file) file.split('/').first end |