class Raykit::Zip
def exclude_glob(glob)
def exclude_glob(glob) @exclude_globs << glob self end
def include_glob(glob)
def include_glob(glob) @include_globs << glob self end
def initialize(filename)
def initialize(filename) @filename = filename @source_dir = Dir.pwd @include_globs = [] @exclude_globs = [] self end
def source_dir(dir)
def source_dir(dir) @source_dir = dir self end
def zip
def zip path = File.dirname(@filename) FileUtils.mkdir_p(path) unless Dir.exist?(path) files_to_archive = Array::new() Dir.chdir(@source_dir) do #include_files = [] @include_globs.each do |include_glob| Dir.glob(include_glob) { |f| #puts "\n" + f files_to_archive << f } end end ::Zip::File::open(@filename, ::Zip::File::CREATE) { |zipfile| count = 0 files_to_archive.each do |file| zipfile.get_output_stream(file) { |f| fr = ::File.open("#{@source_dir}/#{file}", "rb") f.puts(fr.read) fr.close() f.close() count = count + 1 } end zipfile.close puts " added " << count.to_s << " files to " << @filename } end