def untar(parameters)
require 'archive/tar/minitar'
require 'zlib'
params_desc = {
:src => { :mandatory => true, :type => :string },
:dest => { :mandatory => false, :type => :string, :default => '.' }
}
check_parameters(parameters, params_desc)
src = parameters[:src]
dest = parameters[:dest]
error "untar 'src' parameter must be an readable TAR archive" unless
File.exists?(src) and File.readable?(src)
FileUtils.makedirs(dest) if not File.exists?(dest)
puts "Extracting TAR file '#{src}' to '#{dest}'"
begin
if src =~ /\.tar\.gz$/ or src =~ /\.tgz$/
tgz = Zlib::GzipReader.new(File.open(src, 'rb'))
Archive::Tar::Minitar.unpack(tgz, dest)
else
Archive::Tar::Minitar.unpack(src, dest)
end
rescue
error "Error extracting TAR archive: #{$!}"
end
end