Class: Ufo::DSL::Helper

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

Overview

provides some helperally context variables

Instance Method Summary collapse

Methods included from Util

#default_cluster, #default_params, #display_params, #execute, #pretty_time, #settings

Instance Method Details

#current_regionObject



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

def current_region
  return 'us-east-1' if ENV['TEST']
  @current_region ||= `aws configure get region`.strip rescue 'us-east-1'
end

#dockerfile_portObject

helper variables



15
16
17
18
19
20
# File 'lib/ufo/dsl/helper.rb', line 15

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

#env_file(path) ⇒ Object



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

def env_file(path)
  full_path = "#{Ufo.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



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

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

#filtered_lines(text) ⇒ Object



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

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



22
23
24
25
# File 'lib/ufo/dsl/helper.rb', line 22

def full_image_name
  # Dont need to use @options here. Helps simplify the Helper initialization.
  Docker::Builder.new({}).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