Sha256: fa73ce825cc6ec79d7e9fd7b58efe98deda1a782e5d7940d63e9d9919997f978

Contents?: true

Size: 697 Bytes

Versions: 10

Compression:

Stored size: 697 Bytes

Contents

require "libmspack"

module Excavate
  module Extractors
    class CabExtractor < Extractor
      def extract(target)
        open_cab(@archive) do |decompressor, cab|
          file = cab.files

          while file
            path = File.join(target, file.filename)
            decompressor.extract(file, path)
            file = file.next
          end
        end
      end

      private

      def open_cab(archive)
        decompressor = LibMsPack::CabDecompressor.new
        cab = Utils.silence_stream(STDERR) do
          decompressor.search(archive)
        end

        yield decompressor, cab

        decompressor.close(cab)
        decompressor.destroy
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
excavate-0.3.1 lib/excavate/extractors/cab_extractor.rb
excavate-0.3.0 lib/excavate/extractors/cab_extractor.rb
excavate-0.2.5 lib/excavate/extractors/cab_extractor.rb
excavate-0.2.4 lib/excavate/extractors/cab_extractor.rb
excavate-0.2.3 lib/excavate/extractors/cab_extractor.rb
excavate-0.2.2 lib/excavate/extractors/cab_extractor.rb
excavate-0.2.1 lib/excavate/extractors/cab_extractor.rb
excavate-0.2.0 lib/excavate/extractors/cab_extractor.rb
excavate-0.1.1 lib/excavate/extractors/cab_extractor.rb
excavate-0.1.0 lib/excavate/extractors/cab_extractor.rb