class Workspace::File

Public Instance Methods

compress(target_file) click to toggle source
# File workspace-archive.rb, line 49
def compress(target_file)
  target_file.delete
  Zip::File.open(target_file.to_s, 'w') do |zipfile|
    zipfile.add(name, absolute_path)
  end
  self
end
extract(target_dir) click to toggle source
# File workspace-archive.rb, line 57
def extract(target_dir)
  target_dir.create
  if extension == "gz"
    extract_gz(target_dir)
  else
    extract_zip(target_dir)
  end
  self
end

Private Instance Methods

extract_gz(target_dir) click to toggle source
# File workspace-archive.rb, line 80
def extract_gz(target_dir)
  archive = Gem::Package::TarReader.new(Zlib::GzipReader.open(to_s))
  archive.rewind
  archive.each do |entry|
    if entry.directory?
      archive_dir = target_dir.dir(entry.full_name)
      archive_dir.create
    elsif entry.file?
      archive_file = target_dir.file(entry.full_name)
      archive_file.write(entry.read)
    end
  end
  archive.close
end
extract_zip(target_dir) click to toggle source
# File workspace-archive.rb, line 69
def extract_zip(target_dir)
  Zip::File.open(to_s) do |archive|
    archive.each do |entry|
      entry_name = entry.name.force_encoding("UTF-8")
      extract_dir = target_dir.file(entry_name).dir
      extract_dir.create unless extract_dir.exists?
      entry.extract(::File.join(target_dir.to_s, entry_name))
    end
  end
end