class Stevenson::OutputFilter::Zip
Public Instance Methods
output()
click to toggle source
# File lib/stevenson/output_filters/zip.rb, line 7 def output File.join(directory, "#{zip_file_name}.zip").tap do |output_zip_path| # Zip up the output directory write directory, output_zip_path end end
zip_file_name()
click to toggle source
# File lib/stevenson/output_filters/zip.rb, line 14 def zip_file_name options[:zip] == "zip" ? File.basename(directory) : options[:zip] end
Private Instance Methods
write(inputDir, outputFile)
click to toggle source
# File lib/stevenson/output_filters/zip.rb, line 20 def write(inputDir, outputFile) @inputDir = inputDir @outputFile = outputFile entries = Dir.entries(@inputDir) entries.delete(".") entries.delete("..") io = ::Zip::File.open(@outputFile, ::Zip::File::CREATE) writeEntries(entries, "", io) io.close() end
writeEntries(entries, path, io)
click to toggle source
# File lib/stevenson/output_filters/zip.rb, line 33 def writeEntries(entries, path, io) entries.each do |entry| zipFilePath = path == "" ? entry : File.join(path, entry) diskFilePath = File.join(@inputDir, zipFilePath) if File.directory?(diskFilePath) io.mkdir(zipFilePath) unless io.find_entry(zipFilePath) subdir = Dir.entries(diskFilePath); subdir.delete("."); subdir.delete("..") writeEntries(subdir, zipFilePath, io) else io.get_output_stream(zipFilePath) { |f| f.puts(File.open(diskFilePath, "rb").read()) } end end end