Class: Blubber::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/blubber/builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(layer:, logger: nil) ⇒ Builder

Returns a new instance of Builder.



9
10
11
12
# File 'lib/blubber/builder.rb', line 9

def initialize(layer:, logger: nil)
  @layer = layer
  @logger = logger || Logger.for(name: layer.name)
end

Instance Method Details

#buildObject



14
15
16
17
18
19
20
21
22
23
# File 'lib/blubber/builder.rb', line 14

def build
  logger.info ui.color('BUILDING', :yellow)
  retval = do_build
  level, color = retval.zero? ? %i[info green] : %i[error red]

  logger.public_send(level,
                     ui.color((retval.zero? ? 'SUCCESS' : 'ERROR'), color))

  retval.zero?
end

#pushObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/blubber/builder.rb', line 42

def push
  logger.info ui.color('PUSHING', :yellow)
  status = {}
  layer.tags.each do |tag|
    status[tag] = runner.run("docker push #{layer.project_tag(tag)}")
  end

  retval = status.values.reduce(:+)

  level, color = retval.zero? ? %i[info green] : %i[error red]

  logger.public_send(level,
                     ui.color((retval.zero? ? 'SUCCESS' : 'ERROR'), color))

  retval.zero?
end

#tagObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/blubber/builder.rb', line 25

def tag
  logger.info ui.color('TAGGING', :yellow)
  status = {}
  layer.tags.each do |tag|
    status[tag] = runner.run("docker tag #{layer.build_id} #{layer.project_tag(tag)}")
  end

  retval = status.values.reduce(:+)

  level, color = retval.zero? ? %i[info green] : %i[error red]

  logger.public_send(level,
                     ui.color((retval.zero? ? 'SUCCESS' : 'ERROR'), color))

  retval.zero?
end