class Cloudspin::Stack::Artefact::Builder

Attributes

dist_folder[R]
files_to_package[R]
folders_to_package[R]
stack_definition[R]
stack_definition_name[R]
stack_definition_version[R]

Public Class Methods

new(stack_definition:, dist_folder:) click to toggle source
# File lib/cloudspin/stack/artefact/builder.rb, line 22
def initialize(stack_definition:,
               dist_folder:)
  @stack_definition = stack_definition
  @dist_folder = dist_folder
  @stack_definition_name = stack_definition.name
  @stack_definition_version = stack_definition.version
  @folders_to_package = {
    stack_definition.source_path => 'src'
  }
  @files_to_package = []
end

Public Instance Methods

add_file_to_package(source_file) click to toggle source
# File lib/cloudspin/stack/artefact/builder.rb, line 53
def add_file_to_package(source_file)
  @files_to_package << source_file
end
add_folder_to_package(source_folder, artefact_subfolder: nil) click to toggle source
# File lib/cloudspin/stack/artefact/builder.rb, line 48
def add_folder_to_package(source_folder, artefact_subfolder: nil)
  artefact_subfolder ||= File.basename(source_folder)
  @folders_to_package[source_folder] = artefact_subfolder
end
artefact_contents_folder() click to toggle source
# File lib/cloudspin/stack/artefact/builder.rb, line 68
def artefact_contents_folder
  dist_folder + '/' + artefact_name
end
artefact_files() click to toggle source
# File lib/cloudspin/stack/artefact/builder.rb, line 76
def artefact_files
  file_list = []
  Find.find(artefact_contents_folder) do |file|
    file_list << "#{artefact_contents_folder}/#{file}"
  end
  file_list
end
artefact_name() click to toggle source
# File lib/cloudspin/stack/artefact/builder.rb, line 64
def artefact_name
  stack_definition_name + '-' + stack_definition_version
end
artefact_path() click to toggle source
# File lib/cloudspin/stack/artefact/builder.rb, line 72
def artefact_path
  dist_folder + '/' + artefact_name + '.tgz'
end
build() click to toggle source
# File lib/cloudspin/stack/artefact/builder.rb, line 34
def build
  puts "Copying files to include in the artefact to #{artefact_contents_folder}/src."
  rm_rf(artefact_contents_folder)
  folders_to_package.each { |source, destination|
    puts "Copying #{source} to #{artefact_contents_folder + '/' + destination}"
    mkpath File.dirname(artefact_contents_folder + '/' + destination)
    cp_r(source, artefact_contents_folder + '/' + destination)
  }
  files_to_package.each { |file|
    puts "Copying #{file} to #{artefact_contents_folder + '/' + file}"
    cp(file, artefact_contents_folder + '/' + file)
  }
end
package() click to toggle source
# File lib/cloudspin/stack/artefact/builder.rb, line 57
def package
  puts "Create #{artefact_path} from #{artefact_contents_folder}"
  rm_f(artefact_path)
  tar = tar(artefact_contents_folder)
  tgz = gzip(tar)
  File.write(artefact_path, tgz.read)
end