Sha256: 7bc7754c129a1d203e09b983843cb717f3ef451054fdc6a2de886bb6791b7d30

Contents?: true

Size: 1.03 KB

Versions: 13

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

require 'zip'
require 'tmpdir'
require 'fileutils'
require 'securerandom'

module AppInfo::Helper
  module Archive
    # Unarchive zip file
    #
    # source: https://github.com/soffes/lagunitas/blob/master/lib/lagunitas/ipa.rb
    def unarchive(file, prefix:, dest_path: '/tmp')
      base_path = Dir.mktmpdir("appinfo-#{prefix}", dest_path)
      Zip::File.open(file) do |zip_file|
        if block_given?
          yield base_path, zip_file
        else
          zip_file.each do |f|
            f_path = ::File.join(base_path, f.name)
            FileUtils.mkdir_p(::File.dirname(f_path))
            zip_file.extract(f, f_path) unless ::File.exist?(f_path)
          end
        end
      end

      base_path
    end

    def tempdir(file, prefix:, system: false)
      base_path = system ? '/tmp' : ::File.dirname(file)
      full_prefix = "appinfo-#{prefix}-#{::File.basename(file, '.*')}"
      dest_path = Dir.mktmpdir(full_prefix, base_path)
      ::File.join(dest_path, ::File.basename(file))
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
app-info-3.3.0 lib/app_info/helper/archive.rb
app-info-3.2.0 lib/app_info/helper/archive.rb
app-info-3.2.0.beta1 lib/app_info/helper/archive.rb
app-info-3.1.4 lib/app_info/helper/archive.rb
app-info-3.1.3 lib/app_info/helper/archive.rb
app-info-3.1.2 lib/app_info/helper/archive.rb
app-info-3.1.1 lib/app_info/helper/archive.rb
app-info-3.1.0 lib/app_info/helper/archive.rb
app-info-3.0.0 lib/app_info/helper/archive.rb
app-info-3.0.0.beta4 lib/app_info/helper/archive.rb
app-info-3.0.0.beta3 lib/app_info/helper/archive.rb
app-info-3.0.0.beta2 lib/app_info/helper/archive.rb
app-info-3.0.0.beta1 lib/app_info/helper/archive.rb