Class: Ufo::DSL::Helper

Inherits:
Object
  • Object
show all
Defined in:
lib/ufo/dsl/helper.rb

Overview

provides some helperally context variables

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Helper

Returns a new instance of Helper.



11
12
13
14
# File 'lib/ufo/dsl/helper.rb', line 11

def initialize(options={})
  @options = options
  @project_root = options[:project_root] || '.'
end

Instance Method Details

#dockerfile_portObject

helper variables



18
19
20
21
22
23
# File 'lib/ufo/dsl/helper.rb', line 18

def dockerfile_port
  dockerfile_path = "#{@project_root}/Dockerfile"
  if File.exist?(dockerfile_path)
    parse_for_dockerfile_port(dockerfile_path)
  end
end

#env_file(path) ⇒ Object



52
53
54
55
56
57
58
59
60
# File 'lib/ufo/dsl/helper.rb', line 52

def env_file(path)
  full_path = "#{@project_root}/#{path}"
  unless File.exist?(full_path)
    puts "The #{full_path} env file could not be found.  Are you sure it exists?"
    exit 1
  end
  text = IO.read(full_path)
  env_vars(text)
end

#env_vars(text) ⇒ Object

helper methods



31
32
33
34
35
36
37
38
39
40
# File 'lib/ufo/dsl/helper.rb', line 31

def env_vars(text)
  lines = filtered_lines(text)
  lines.map do |line|
    key,value = line.strip.split("=").map {|x| x.strip}
    {
      name: key,
      value: value,
    }
  end
end

#filtered_lines(text) ⇒ Object



42
43
44
45
46
47
48
49
50
# File 'lib/ufo/dsl/helper.rb', line 42

def filtered_lines(text)
  lines = text.split("\n")
  # remove comment at the end of the line
  lines.map! { |l| l.sub(/#.*/,'').strip }
  # filter out commented lines
  lines = lines.reject { |l| l =~ /(^|\s)#/i }
  # filter out empty lines
  lines = lines.reject { |l| l.strip.empty? }
end

#full_image_nameObject



25
26
27
# File 'lib/ufo/dsl/helper.rb', line 25

def full_image_name
  Docker::Builder.new(@options).full_image_name
end

#parse_for_dockerfile_port(dockerfile_path) ⇒ Object



66
67
68
69
70
71
72
73
74
# File 'lib/ufo/dsl/helper.rb', line 66

def parse_for_dockerfile_port(dockerfile_path)
  lines = IO.read(dockerfile_path).split("\n")
  expose_line = lines.find { |l| l =~ /^EXPOSE / }
  if expose_line
    md = expose_line.match(/EXPOSE (\d+)/)
    port = md[1] if md
  end
  port.to_i if port
end

#settingsObject



62
63
64
# File 'lib/ufo/dsl/helper.rb', line 62

def settings
  @settings ||= Settings.new(@project_root)
end