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