Module: Teapot::Dependency

Included in:
Target
Defined in:
lib/teapot/dependency.rb

Defined Under Namespace

Classes: Alias, Chain, Provision, UnresolvedDependencyError

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.chain(selection, dependencies, providers) ⇒ Object

An ‘UnresolvedDependencyError` will be thrown if there are any unresolved dependencies.



189
190
191
192
193
194
195
196
197
# File 'lib/teapot/dependency.rb', line 189

def self.chain(selection, dependencies, providers)
  chain = Chain.new(selection, dependencies, providers)

  if chain.unresolved.size > 0
    raise UnresolvedDependencyError.new(chain)
  end

  return chain
end

Instance Method Details

#dependenciesObject



74
75
76
# File 'lib/teapot/dependency.rb', line 74

def dependencies
  @dependencies ||= Set.new
end

#depends(name) ⇒ Object



66
67
68
# File 'lib/teapot/dependency.rb', line 66

def depends(name)
  dependencies << name
end

#depends?(name) ⇒ Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/teapot/dependency.rb', line 70

def depends?(name)
  dependencies.include? name
end

#provides(name_or_aliases, &block) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/teapot/dependency.rb', line 44

def provides(name_or_aliases, &block)
  if String === name_or_aliases || Symbol === name_or_aliases
    name = name_or_aliases
    
    if block_given?
      provisions[name] = Provision.new(block)
    else
      provisions[name] = Provision.new(nil)
    end
  else
    aliases = name_or_aliases
    
    aliases.each do |name, dependencies|
      provisions[name] = Alias.new(Array dependencies)
    end
  end
end

#provides?(name) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/teapot/dependency.rb', line 40

def provides?(name)
  provisions.key? name
end

#provisionsObject



62
63
64
# File 'lib/teapot/dependency.rb', line 62

def provisions
  @provisions ||= {}
end