Sha256: f816547180aa917a39bf7008747531f3b4b6fda1126a8b8ea205c8914357cd40

Contents?: true

Size: 1.3 KB

Versions: 9

Compression:

Stored size: 1.3 KB

Contents

require 'zip/zip'
require 'tempfile'
require 'find'

module Selenium
  module WebDriver
    module Zipper

      EXTENSIONS = %w[.zip .xpi]

      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

      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.encode64 io.read }
        ensure
          FileUtils.rm_rf tmp_dir
        end
      end

    end # Zipper
  end # WebDriver
end # Selenium

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
selenium-webdriver-2.2.0 lib/selenium/webdriver/common/zipper.rb
selenium-webdriver-2.1.0 lib/selenium/webdriver/common/zipper.rb
selenium-webdriver-2.0.1 lib/selenium/webdriver/common/zipper.rb
selenium-webdriver-2.0.0 lib/selenium/webdriver/common/zipper.rb
selenium-webdriver-0.2.2 lib/selenium/webdriver/common/zipper.rb
selenium-webdriver-0.2.1 lib/selenium/webdriver/common/zipper.rb
selenium-webdriver-0.2.0 lib/selenium/webdriver/common/zipper.rb
selenium-webdriver-0.2.0.dev lib/selenium/webdriver/common/zipper.rb
selenium-webdriver-0.1.4 lib/selenium/webdriver/common/zipper.rb