Class: Ufo::Docker::Compiler

Inherits:
Object
  • Object
show all
Defined in:
lib/ufo/docker/compiler.rb

Instance Method Summary collapse

Constructor Details

#initialize(dockerfile) ⇒ Compiler

Returns a new instance of Compiler.



3
4
5
6
# File 'lib/ufo/docker/compiler.rb', line 3

def initialize(dockerfile)
  @dockerfile = dockerfile
  @erb_file = "#{dockerfile}.erb"
end

Instance Method Details

#compileObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/ufo/docker/compiler.rb', line 8

def compile
  return unless File.exist?(@erb_file)

  puts "Compiled #{File.basename(@erb_file).color(:green)} to #{File.basename(@dockerfile).color(:green)}"
  path = "#{Ufo.root}/.ufo/settings/dockerfile_variables.yml"
  vars = YAML.load_file(path)[Ufo.env] if File.exist?(path)
  vars ||= {}
  result = RenderMePretty.result(@erb_file, vars)
  comment =<<~EOL.chop # remove the trailing newline
    # Note this file was generated from #{File.basename(@erb_file)} as a part of running ufo ship"
    # To update the FROM statement with the latest base docker image run: ufo docker base
  EOL
  result = "#{comment}\n#{result}"
  IO.write(@dockerfile, result)
end