Class: Excavate::Extractors::RpmExtractor

Inherits:
Extractor
  • Object
show all
Defined in:
lib/excavate/extractors/rpm_extractor.rb

Overview

Extractor for RPM packages

Uses Omnizip's RPM format support for extraction. Extracts the raw payload as a file (e.g., fonts.src.cpio.gz).

Instance Method Summary collapse

Methods inherited from Extractor

eager_load_subclasses!, for_magic_type, handles, #initialize, registered_types, registry

Constructor Details

This class inherits a constructor from Excavate::Extractors::Extractor

Instance Method Details

#extract(target) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/excavate/extractors/rpm_extractor.rb', line 14

def extract(target)
  rpm = Omnizip::Formats::Rpm::Reader.new(@archive)
  rpm.open
  content = rpm.raw_payload
  path = target_path(@archive, rpm, target)

  FileUtils.mkdir_p(File.dirname(path))
  File.write(path, content, mode: "wb")
ensure
  rpm&.close
end