Legacy format conversion

Converting Old CAB Archives

require 'cabriolet'
require 'zip'

# Convert CAB to ZIP
old_cab = Cabriolet::CAB::Parser.new.parse('legacy.cab')

Zip::File.open('modern.zip', Zip::File::CREATE) do |zipfile|
  old_cab.files.each do |file|
    zipfile.get_output_stream(file.name) { |f| f.write(file.data) }
  end
end

Batch Conversion

# Convert all CAB files in directory
Dir.glob('old_archives/*.cab').each do |cab_file|
  cab = Cabriolet::CAB::Parser.new.parse(cab_file)
  output = cab_file.sub('.cab', '.zip')

  Zip::File.open(output, Zip::File::CREATE) do |zipfile|
    cab.files.each do |file|
      zipfile.get_output_stream(file.name) { |f| f.write(file.data) }
    end
  end

  puts "Converted: #{cab_file}#{output}"
end