Sha256: da2b989d76177f6eda4e943dea3572251d7cf8f1239bd5adbc694a3714b3ff7d

Contents?: true

Size: 956 Bytes

Versions: 1

Compression:

Stored size: 956 Bytes

Contents

module ZipDir
  class Unzipper
    attr_reader :zip_path
    def initialize(zip_path)
      @zip_path, @unzip_path = zip_path, Dir.mktmpdir
    end

    def cleanup
      @unzipped = false
      FileUtils.remove_entry_secure @unzip_path
    end

    def unzip_path
      unzip unless unzipped?
      @unzip_path
    end

    def unzipped?
      !!@unzipped
    end

    def unzip
      ::Zip::File.open(zip_path) do |zip_file|
        zip_file.each do |entry|
          file_path = "#{@unzip_path}/#{entry.name}"

          # Fixes:
          # Errno::ENOENT:
          # No such file or directory @ rb_sysopen - /var/folders/6c/s4snqy051jqdpbjw7f7tsn940000gn/T/d20160209-56123-1o14n5n/Niveaux/Fondations.png
          dir_path = File.dirname(file_path).to_s
          FileUtils.mkdir_p dir_path unless File.exists?(dir_path)

          entry.extract(file_path) unless File.exists?(file_path)
        end
      end
      @unzipped = true
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zip_dir-0.1.3 lib/zip_dir/unzipper.rb