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