Class: Kuby::Docker::LayerStack

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/kuby/docker/layer_stack.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLayerStack

Returns a new instance of LayerStack.



8
9
10
11
# File 'lib/kuby/docker/layer_stack.rb', line 8

def initialize
  @stack = []
  @layers = {}
end

Instance Attribute Details

#layersObject (readonly)

Returns the value of attribute layers.



6
7
8
# File 'lib/kuby/docker/layer_stack.rb', line 6

def layers
  @layers
end

#stackObject (readonly)

Returns the value of attribute stack.



6
7
8
# File 'lib/kuby/docker/layer_stack.rb', line 6

def stack
  @stack
end

Instance Method Details

#delete(name) ⇒ Object



36
37
38
39
# File 'lib/kuby/docker/layer_stack.rb', line 36

def delete(name)
  stack.delete(name)
  layers.delete(name)
end

#eachObject



13
14
15
16
# File 'lib/kuby/docker/layer_stack.rb', line 13

def each
  return to_enum(__method__) unless block_given?
  @stack.each { |name| yield layers[name] }
end

#insert(name, layer, options = {}) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/kuby/docker/layer_stack.rb', line 23

def insert(name, layer, options = {})
  existing_name = options[:before] || options[:after]
  idx = stack.index(existing_name)

  unless idx
    raise ArgumentError, "Could not find existing layer '#{existing_name}'"
  end

  idx += 1 if options[:after]
  stack.insert(idx, name)
  layers[name] = layer
end

#use(name, layer) ⇒ Object



18
19
20
21
# File 'lib/kuby/docker/layer_stack.rb', line 18

def use(name, layer)
  stack << name
  layers[name] = layer
end