def zip(parameters)
require 'zip/zip'
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 },
:prefix => { :mandatory => false, :type => :string }
}
check_parameters(parameters, params_desc)
root = parameters[:root]
includes = parameters[:includes]
excludes = parameters[:excludes]
dotmatch = parameters[:dotmatch]
dest = parameters[:dest]
prefix = parameters[:prefix]
files = filter_files(includes, excludes, root, dotmatch)
puts "Building ZIP archive '#{dest}'"
begin
zipfile = Zip::ZipFile.open(dest, Zip::ZipFile::CREATE) do |zip|
for file in files
path = (root == nil ? file : File.join(root, file))
entry = prefix ? File.join(prefix, file) : file
puts "Adding '#{entry}'" if @build.listener.verbose
zip.add(entry, path)
end
zip.close
end
rescue
error "Error building ZIP archive: #{$!}"
end
end