class Archive

Public Instance Methods

zip() click to toggle source
# File lib/archivegem.rb, line 4
def zip
    entries = Dir.entries(input_directory)
    entries.delete('.')
    entries.delete('..')

    File.delete(output_file) if File.exist?(output_file)

    io = Zip::File.open(output_file, Zip::File::CREATE)

    write_zip_entries(entries, '', io)
    io.close()
end

Private Instance Methods

write_zip_entries(entries, path, io) click to toggle source
# File lib/archivegem.rb, line 19
def write_zip_entries(entries, path, io)
    entries.each do |entry|
        next if skip.include? entry

        zip_file_path  = path == "" ? entry : File.join(path, entry)
        disk_file_path = File.join(input_directory, zip_file_path)

        if File.directory?(disk_file_path)
            io.mkdir(zip_file_path)
            subdir = Dir.entries(disk_file_path); subdir.delete("."); subdir.delete("..")
            write_zip_entries(subdir, zip_file_path, io)
        else
            io.get_output_stream(zip_file_path) { |f| f.print(File.open(disk_file_path, "rb").read())}
        end
    end
end