Class: Zipit
- Inherits:
-
Object
- Object
- Zipit
- Defined in:
- lib/zipit.rb
Instance Method Summary collapse
Instance Method Details
#create_zip_file(params) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/zipit.rb', line 4 def create_zip_file params file_name = params[:file_name] dir = params[:dir] @global_excludes = params[:global_excludes].nil? ? [] : params[:global_excludes] @includes = params[:includes].nil? ? [] : params[:includes] @excludes = params[:excludes].nil? ? [] : params[:excludes] Zip::ZipOutputStream.open(file_name) do |zos| zip(zos, dir, dir) end end |
#match?(name, list) ⇒ Boolean
41 42 43 44 45 46 47 |
# File 'lib/zipit.rb', line 41 def match? name, list list.each do |pattern| return true if File.fnmatch(pattern, name) or name =~ /^#{pattern}/ end false end |
#zip(zos, name, basedir) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/zipit.rb', line 16 def zip zos, name, basedir Dir.new(name).each do |filename| if(filename != '.' and filename != '..') full_name = name + '/' + filename if File.directory? full_name zip(zos, full_name, basedir) else new_name = full_name[basedir.length+1..full_name.length] if (match?(new_name, @global_excludes) or match?(new_name, @excludes)) and not match?(new_name, @includes) ; else puts "Adding #{new_name} ..." # Create a new entry with some arbitrary name zos.put_next_entry(new_name) # Add the contents of the file, don't read the stuff linewise if its binary, instead use direct IO zos.print IO.read(name + '/' + filename) end end end end end |