Class: Docker::Cli::Dockerfile

Inherits:
Object
  • Object
show all
Defined in:
lib/docker/cli/dockerfile.rb

Defined Under Namespace

Classes: NoDockerfileFound

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file) ⇒ Dockerfile

Returns a new instance of Dockerfile.



23
24
25
# File 'lib/docker/cli/dockerfile.rb', line 23

def initialize(file)
  @dfile = file
end

Class Method Details

.find_available(root = Dir.getwd) ⇒ Object



10
11
12
# File 'lib/docker/cli/dockerfile.rb', line 10

def self.find_available(root = Dir.getwd)
  Dir.glob("**/Dockerfile*")
end

.images(dockerfile) ⇒ Object

expect dockerfile is CONTENT, not file path



19
20
21
# File 'lib/docker/cli/dockerfile.rb', line 19

def self.images(dockerfile)
  DockerRunLog.instance.dockerfile_images(dockerfile)
end

.run_before?(dockerfile_path) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/docker/cli/dockerfile.rb', line 14

def self.run_before?(dockerfile_path)
  DockerRunLog.instance.has_dockerfile_seen_before?(dockerfile_path)
end

Instance Method Details

#is_erb_template?Boolean

Returns:

  • (Boolean)


46
47
48
49
50
51
52
53
# File 'lib/docker/cli/dockerfile.rb', line 46

def is_erb_template?
  if File.exist?(@dfile)
    cont = File.read(@dfile)
    (cont =~ /<%=/ and cont =~ /%>/) != nil
  else
    false
  end
end

#process_dockerfile_template(file, values = {}) ⇒ Object

Raises:



55
56
57
58
# File 'lib/docker/cli/dockerfile.rb', line 55

def process_dockerfile_template(file, values = {})
  raise Error, "Given dockerfile to process as template not found" if not File.exist?(file)
  DockerfileTemplate::TemplateEngine.new.process(File.read(file), values) 
end

#render_dockerfile(vals = {}, &block) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/docker/cli/dockerfile.rb', line 27

def render_dockerfile(vals = {}, &block)
  if @_df.nil?
    if @dfile.nil?
      @_df = nil
    else
      if File.exist?(@dfile)
        if is_erb_template?
          @_df = process_dockerfile_template(@dfile, vals)
        else
          @_df = File.read(@dfile)
        end
      else
        @_df = nil
      end
    end
  end
  @_df
end