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