def targz(parameters)
require 'archive/tar/minitar'
require 'zlib'
params_desc = {
:root => { :mandatory => false, :type => :string },
:includes => { :mandatory => true, :type => :string_or_array },
:excludes => { :mandatory => false, :type => :string_or_array, :default => nil },
:dotmatch => { :mandatory => false, :type => :boolean, :default => false },
:dest => { :mandatory => true, :type => :string }
}
check_parameters(parameters, params_desc)
root = parameters[:root]
includes = parameters[:includes]
excludes = parameters[:excludes]
dotmatch = parameters[:dotmatch]
dest = parameters[:dest]
files = filter_files(includes, excludes, root, dotmatch)
begin
current_dir = Dir.pwd
abs_dest = File.expand_path(dest)
Dir.chdir(root) if root
Archive::Tar::Minitar::Output.
open(Zlib::GzipWriter.new(File.open(abs_dest, 'wb'))) do |tgz|
for file in files
puts "Adding '#{file}'" if @build.listener.verbose
Archive::Tar::Minitar.pack_file(file, tgz)
end
end
rescue
error "Error generating TARGZ archive: #{$!}"
ensure
Dir.chdir(current_dir)
end
end