class Excavate::Extractors::XarExtractor

Public Instance Methods

extract(target) click to toggle source
# File lib/excavate/extractors/xar_extractor.rb, line 6
def extract(target)
  Dir.chdir(target) do
    extract_with_libarchive
    rename_payload(target)
  end
end

Private Instance Methods

extract_with_libarchive() click to toggle source
# File lib/excavate/extractors/xar_extractor.rb, line 15
def extract_with_libarchive
  flags = ::Archive::EXTRACT_PERM
  reader = ::Archive::Reader.open_filename(@archive)

  reader.each_entry do |entry|
    reader.extract(entry, flags.to_i)
  end

  reader.close
end
rename_payload(target) click to toggle source
# File lib/excavate/extractors/xar_extractor.rb, line 26
def rename_payload(target)
  Dir.glob(File.join(target, "**", "Payload")).each do |file|
    next unless File.file?(file)

    FileUtils.mv(file, "#{file}.cpio.gz")
  end
end