Class: Concourse::Pipeline

Inherits:
Object
  • Object
show all
Includes:
Util
Defined in:
lib/concourse/pipeline.rb

Constant Summary

Constants included from Util

Util::GITATTRIBUTES_FILE, Util::GITIGNORE_FILE

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Util

#docker_compose, #docker_compose_path, #each_job, #each_task, #ensure_in_gitignore, #erbify_file, #find_task, #fly, #note, #running, #sh

Constructor Details

#initialize(name, directory, erb_filename, options = {}) ⇒ Pipeline

Returns a new instance of Pipeline.



7
8
9
10
11
12
13
# File 'lib/concourse/pipeline.rb', line 7

def initialize name, directory, erb_filename, options={}
  @name = name
  @directory = directory
  @erb_filename = File.join(@directory, erb_filename)
  @filename = File.join(@directory, erb_filename + ".generated")
  @ytt = options.key?(:ytt) ? options[:ytt] : false
end

Instance Attribute Details

#directoryObject (readonly)

Returns the value of attribute directory.



5
6
7
# File 'lib/concourse/pipeline.rb', line 5

def directory
  @directory
end

#erb_filenameObject (readonly)

Returns the value of attribute erb_filename.



5
6
7
# File 'lib/concourse/pipeline.rb', line 5

def erb_filename
  @erb_filename
end

#filenameObject (readonly)

Returns the value of attribute filename.



5
6
7
# File 'lib/concourse/pipeline.rb', line 5

def filename
  @filename
end

#nameObject (readonly)

Returns the value of attribute name.



5
6
7
# File 'lib/concourse/pipeline.rb', line 5

def name
  @name
end

#yttObject (readonly)

Returns the value of attribute ytt.



5
6
7
# File 'lib/concourse/pipeline.rb', line 5

def ytt
  @ytt
end

Instance Method Details

#generateObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/concourse/pipeline.rb', line 15

def generate
  Tempfile.create(["pipeline", ".yml"]) do |f|
    f.write erbify_file(erb_filename, working_directory: directory)
    f.close

    if ytt
      ytt_args = ["-f #{f.path}"]
      ytt_args << "-f #{File.expand_path(File.join(File.dirname(__FILE__), "ytt"))}"
      ytt_args << "-f #{File.join(directory, ytt)}" if ytt.is_a?(String)
      sh ["ytt", ytt_args, "> #{filename}"].flatten.join(" ")
    else
      FileUtils.mv f.path, filename, force: true
    end
  end
end