lib/concourse/pipeline.rb



class Concourse
  class Pipeline
    include Concourse::Util

    attr_reader :name, :directory, :erb_filename, :filename, :ytt

    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

    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
  end
end