class Excavate::Extractors::CpioExtractor
Public Instance Methods
extract(target)
click to toggle source
# File lib/excavate/extractors/cpio_extractor.rb, line 7 def extract(target) extract_cpio_new_format(target) rescue RuntimeError => e raise unless e.message.start_with?("Invalid magic") extract_cpio_old_format(target) end
Private Instance Methods
extract_cpio_new_format(target)
click to toggle source
# File lib/excavate/extractors/cpio_extractor.rb, line 17 def extract_cpio_new_format(target) File.open(@archive, "rb") do |archive_file| CPIO::ASCIIReader.new(archive_file).each do |entry, file| path = File.join(target, entry.name) if entry.directory? FileUtils.mkdir_p(path) else FileUtils.mkdir_p(File.dirname(path)) File.write(path, file.read, mode: "wb") end end end end
extract_cpio_old_format(target)
click to toggle source
# File lib/excavate/extractors/cpio_extractor.rb, line 31 def extract_cpio_old_format(target) File.open(@archive, "rb") do |archive_file| CPIO::ArchiveReader.new(archive_file).each_entry do |entry| path = File.expand_path(entry.filename, target) if entry.directory? FileUtils.mkdir_p(path) else FileUtils.mkdir_p(File.dirname(path)) File.write(path, entry.data, mode: "wb") end end end end