module Selenium::WebDriver::Zipper

Constants

EXTENSIONS

Public Class Methods

unzip(path) click to toggle source
# File lib/selenium/webdriver/common/zipper.rb, line 11
def self.unzip(path)
  destination = Dir.mktmpdir("unzip")
  FileReaper << destination

  Zip::ZipFile.open(path) do |zip|
    zip.each do |entry|
      to      = File.join(destination, entry.name)
      dirname = File.dirname(to)

      FileUtils.mkdir_p dirname unless File.exist? dirname
      zip.extract(entry, to)
    end
  end

  destination
end
zip(path) click to toggle source
# File lib/selenium/webdriver/common/zipper.rb, line 28
def self.zip(path)
  # can't use Tempfile here since it doesn't support File::BINARY mode on 1.8
  # can't use Dir.mktmpdir(&blk) because of http://jira.codehaus.org/browse/JRUBY-4082
  tmp_dir = Dir.mktmpdir
  begin
    zip_path = File.join(tmp_dir, "webdriver-zip")

    Zip::ZipFile.open(zip_path, Zip::ZipFile::CREATE) { |zip|
      ::Find.find(path) do |file|
        next if File.directory?(file)
        entry = file.sub("#{path}/", '')

        zip.add entry, file
      end
    }

    File.open(zip_path, "rb") { |io| Base64.strict_encode64 io.read }
  ensure
    FileUtils.rm_rf tmp_dir
  end
end