Class: Furoshiki::Zip::Recursive

Inherits:
Object
  • Object
show all
Defined in:
lib/furoshiki/zip/recursive.rb

Overview

Adapted from rubyzip’s sample, ZipFileGenerator

This is a utility class that uses rubyzip to recursively generate a zip file containing the given entries and all of their children.

Best used through frontend classes Furoshiki::Zip::Directory or Furoshiki::Zip::DirectoryContents

To zip the directory “/tmp/input” so that unarchiving gives you a single directory “input”:

zip = Furoshiki::Zip::Recursive
entries = Pathname.new("/tmp/input").entries
zip_prefix = ''
disk_prefix = '/tmp'
output_file = '/tmp/out.zip'
zf.write(entries, disk_prefix, zip_prefix, output_file)

Instance Method Summary collapse

Constructor Details

#initialize(output_file) ⇒ Recursive

Returns a new instance of Recursive.



26
27
28
# File 'lib/furoshiki/zip/recursive.rb', line 26

def initialize(output_file)
  @output_file = output_file.to_s
end

Instance Method Details

#write(entries, disk_prefix, zip_prefix) ⇒ Object

Parameters:

  • entries (Array<Pathname>)

    the initial set of files to include

  • disk_prefix (Pathname)

    a path prefix for existing entries

  • zip_prefix (Pathname)

    a path prefix to add within archive

  • output_file (Pathname)

    the location of the output archive



34
35
36
37
38
# File 'lib/furoshiki/zip/recursive.rb', line 34

def write(entries, disk_prefix, zip_prefix)
  io = ::Zip::ZipFile.open(@output_file, ::Zip::ZipFile::CREATE); 
  write_entries(entries, disk_prefix, zip_prefix, io)
  io.close();
end