From 0584c5d628f34b5d2edb2a075774e0d457423bd2 Mon Sep 17 00:00:00 2001 From: Paul Duncan Date: Sat, 6 Aug 2016 12:55:52 -0400 Subject: add variants --- spec/zip_spec.cr | 6 +++++- src/zip.cr | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/spec/zip_spec.cr b/spec/zip_spec.cr index 74066b7..0ace290 100644 --- a/spec/zip_spec.cr +++ b/spec/zip_spec.cr @@ -1,5 +1,7 @@ require "./spec_helper" +TEST_DIR = File.dirname(__FILE__) + describe Zip do # TODO: Write tests @@ -9,7 +11,9 @@ describe Zip do end describe Zip::Writer do - Zip.write("test.zip") do |zip| + Zip.write(File.join(TEST_DIR, "test.zip")) do |zip| zip.add("foo.txt", MemoryIO.new("foo")) + zip.add("bar.txt", "bar") + zip.add_file("shard.yml", File.join(TEST_DIR, "..", "shard.yml")) end end diff --git a/src/zip.cr b/src/zip.cr index 43fc4c7..5c2acfb 100644 --- a/src/zip.cr +++ b/src/zip.cr @@ -516,6 +516,28 @@ module Zip @pos - src_pos end + def add( + path : String, + body : String | Bytes, + method : CompressionMethod = CompressionMethod::DEFLATE, + time : Time = Time.now, + comment : String = "", + ) : UInt64 + add(path, MemoryIO.new(body), method, time, comment) + end + + def add_file( + path : String, + file_path : String, + method : CompressionMethod = CompressionMethod::DEFLATE, + time : Time = Time.now, + comment : String = "", + ) : UInt64 + File.open(file_path, "rb") do |io| + add(path, io, method, time, comment) + end + end + # 4.3.16 End of central directory record: # # end of central dir signature 4 bytes (0x06054b50) -- cgit v1.2.3