def gunzip(parameters)
require 'zlib'
params_desc = {
:src => { :mandatory => true, :type => :string },
:dest => { :mandatory => false, :type => :string }
}
check_parameters(parameters, params_desc)
src = parameters[:src]
dest = parameters[:dest]
error "gunzip 'src' parameter must be an readable GZIP archive" unless
File.exists?(src) and File.readable?(src)
if not dest
if src =~ /.*\.gz$/
dest = src[0..-4]
elsif src =~ /.*\.gzip$/
dest = src[0..-6]
elsif src =~ /.*\.tgz/
dest = src[0..-5]+'.tar'
else
error "gunzip can't guess 'dest' parameter from 'src' file name"
end
end
puts "Expanding GZIP archive '#{dest}'"
begin
Zlib::GzipReader.open(src) do |input|
output = File.open(dest, 'wb')
output.write(input.read)
output.close
end
rescue
error "Error expanding GZIP archive: #{$!}"
end
end