class ET::ArchiveManager

Attributes

archive[R]
destination[R]
unpacked_files[R]

Public Class Methods

new(archive, destination) click to toggle source
# File lib/et/archive_manager.rb, line 6
def initialize(archive, destination)
  @archive = archive
  @destination = destination
end

Public Instance Methods

delete_archive() click to toggle source
# File lib/et/archive_manager.rb, line 11
def delete_archive
  File.delete(archive)
end
unpack() click to toggle source
# File lib/et/archive_manager.rb, line 15
def unpack
  @unpacked_files = []
  File.open(archive, "rb") do |tar_gz|
    uncompress(tar_gz)
  end
  @unpacked_files
end

Private Instance Methods

create_file(entry) click to toggle source
# File lib/et/archive_manager.rb, line 37
def create_file(entry)
  if entry.file?
    filename = File.join(destination, entry.full_name)
    FileUtils.mkdir_p(File.dirname(filename))
    File.open(filename, "wb") do |f|
      f.write(entry.read)
    end
    File.chmod(entry.header.mode, filename)
    @unpacked_files << filename
  end
end
process_tar(tar) click to toggle source
# File lib/et/archive_manager.rb, line 31
def process_tar(tar)
  Gem::Package::TarReader.new(tar) do |entries|
    entries.each { |entry| create_file(entry) }
  end
end
uncompress(file) click to toggle source
# File lib/et/archive_manager.rb, line 25
def uncompress(file)
  Zlib::GzipReader.open(file) do |tar|
    process_tar(tar)
  end
end