Sha256: b85a0b952c56654de9efd831377e5a4196e8a83ca94a0ab7376137fa00f28604

Contents?: true

Size: 1.4 KB

Versions: 19

Compression:

Stored size: 1.4 KB

Contents

require 'zip'

class Zip::File
  def add_dir(entry, dir)
    if File.directory? dir
      entries = Dir.entries(dir) - %w[. ..]
      entries.each do |subentry|
        add_dir "#{entry}/#{subentry}", "#{dir}/#{subentry}"
      end
    else
      add entry, dir
    end
  end
end

class ZipFileGenerator
  # Initialize with the directory to zip and the location of the output archive.
  def initialize(input_dir, entry, zipfile)

    @input_dir = input_dir
    @zipfile = zipfile
    @entry = entry
  end

  # Zip the input directory.
  def write
    entries = Dir.entries(@input_dir) - %w[. ..]
    write_entries entries, @entry, @zipfile
  end

  private

  # A helper method to make the recursion work.
  def write_entries(entries, path, zipfile)
    entries.each do |e|
      zipfile_path = path == '' ? e : File.join(path, e)
      disk_file_path = File.join(@input_dir, zipfile_path)

      if File.directory? disk_file_path
        recursively_deflate_directory(disk_file_path, zipfile, zipfile_path)
      else
        put_into_archive(disk_file_path, zipfile, zipfile_path)
      end
    end
  end

  def recursively_deflate_directory(disk_file_path, zipfile, zipfile_path)
    zipfile.mkdir zipfile_path
    subdir = Dir.entries(disk_file_path) - %w[. ..]
    write_entries subdir, zipfile_path, zipfile
  end

  def put_into_archive(disk_file_path, zipfile, zipfile_path)
    zipfile.add(zipfile_path, disk_file_path)
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
cocoapods-flutter-dt-0.4.3 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.4.2 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.4.1 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.2.7 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.2.6 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.2.5 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.2.4 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.2.3 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.2.2 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.2.1 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.2.0 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.1.0 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.0.9 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.0.8 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.0.7 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.0.6 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.0.4 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.0.3 lib/cocoapods-flutter/native/archive/zip_tool.rb
cocoapods-flutter-dt-0.0.2 lib/cocoapods-flutter/native/archive/zip_tool.rb