class Molecule::Molecule

Attributes

dependencies[RW]
name[RW]
version[RW]

Public Class Methods

clear_cache() click to toggle source
# File lib/molecule/molecule.rb, line 39
def self.clear_cache
  @@cache = {}
end
new(name, version, dependencies) click to toggle source
# File lib/molecule/molecule.rb, line 10
def initialize name, version, dependencies
  @name = name.to_s
  @version = version
  @dependencies = dependencies
end
read(name) click to toggle source
# File lib/molecule/molecule.rb, line 20
def self.read name
  read_from_cache(name) || read_from_file(name)
end
read_from_cache(name) click to toggle source
# File lib/molecule/molecule.rb, line 35
def self.read_from_cache name
  @@cache[name]
end
read_from_file(name) click to toggle source
# File lib/molecule/molecule.rb, line 24
def self.read_from_file name
  molecule_config = ::Molecule::File.new(name).read

  raise "invalid molecule name '#{name}' in:\n#{molecule_config.inspect}" if name.to_s != molecule_config[:name]

  version = molecule_config[:version] || '0.1.0'
  dependencies = molecule_config[:dependencies] || []

  @@cache[name] = self.new name, version, dependencies
end

Public Instance Methods

has_child?(name) click to toggle source
# File lib/molecule/molecule.rb, line 16
def has_child? name
  @dependencies.include?(name)
end