Module: Middleman::Presentation::Utils

Defined in:
lib/middleman-presentation-core/utils.rb

Overview

Utils module

Class Method Summary collapse

Class Method Details

.zip(source_directory, destination_file, prefix: nil) ⇒ Object

Create zip archive from directory

Parameters:

  • source_directory (String)

    The source directory

  • destination_file (String)

    The zip file which should be created

  • prefix (String) (defaults to: nil)

    A prefix for the zip file, e.g. dir1/dir2/ => dir1/dir2/zip_file. Please mind the trailing ‘/’.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/middleman-presentation-core/utils.rb', line 17

def zip(source_directory, destination_file, prefix: nil)
  Zip.setup do |c|
    c.on_exists_proc          = true
    c.continue_on_exists_proc = true
    c.unicode_names           = true
    c.default_compression     = Zlib::BEST_COMPRESSION
  end

  Zip::File.open(destination_file, Zip::File::CREATE) do |file|
    Dir.glob(File.join(source_directory, '**', '*')).each do |filename|
      path = ''
      path << prefix if prefix
      path << Pathname.new(filename).relative_path_from(Pathname.new(source_directory)).to_s

      file.add(path, filename)
    end
  end
end