zipit 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/CHANGES +6 -0
  2. data/README +14 -0
  3. data/Rakefile +13 -0
  4. data/lib/zip_it.rb +69 -0
  5. data/zipit.gemspec +29 -0
  6. metadata +59 -0
data/CHANGES ADDED
@@ -0,0 +1,6 @@
1
+
2
+ = Zipit Gem Changelog
3
+
4
+ == Version 0.1.0
5
+
6
+ * Initial release.
data/README ADDED
@@ -0,0 +1,14 @@
1
+ = Zipit Gem -- rake helper for zipping/unzipping project files
2
+
3
+ = Installing Zipit
4
+
5
+ == Installing the Gem
6
+ $ sudo gem sources -a http://gemcutter.org
7
+ $ sudo gem install zipit
8
+
9
+ == Usage
10
+
11
+ task :zip do
12
+ zip :archive => "my_project.zip", :dir => "."
13
+ end
14
+
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ # Rakefile for zipit
2
+
3
+ require "lib/zip_it"
4
+
5
+ # require 'rake'
6
+ # require 'rake/gempackagetask'
7
+
8
+ task :default => :zip
9
+
10
+ task :zip do
11
+ zip :archive => "zipit.zip", :dir => "."
12
+ end
13
+
data/lib/zip_it.rb ADDED
@@ -0,0 +1,69 @@
1
+ require 'zip/zip'
2
+
3
+ class ZipIt
4
+ def create_zip_file params
5
+ file_name = params[:file_name]
6
+ dir = params[:dir]
7
+ @global_excludes = params[:global_excludes].nil? ? [] : params[:global_excludes]
8
+ @includes = params[:includes].nil? ? [] : params[:includes]
9
+ @excludes = params[:excludes].nil? ? [] : params[:excludes]
10
+
11
+ Zip::ZipOutputStream.open(file_name) do |zos|
12
+ zip(zos, dir, dir)
13
+ end
14
+ end
15
+
16
+ def zip zos, name, basedir
17
+ Dir.new(name).each do |filename|
18
+ if(filename != '.' and filename != '..')
19
+ full_name = name + '/' + filename
20
+
21
+ if File.directory? full_name
22
+ zip(zos, full_name, basedir)
23
+ else
24
+ new_name = full_name[basedir.length+1..full_name.length]
25
+ #puts new_name
26
+
27
+ #unless contains?(@excludes, full_name) and not contains?(@includes, full_name)
28
+ if (match?(new_name, @global_excludes) or match?(new_name, @excludes)) and
29
+ not match?(new_name, @includes)
30
+ ;
31
+ else
32
+ puts "Adding #{new_name} ..."
33
+ # Create a new entry with some arbitrary name
34
+ zos.put_next_entry(new_name)
35
+ # Add the contents of the file, don't read the stuff linewise if its binary, instead use direct IO
36
+ zos.print IO.read(name + '/' + filename)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ # def contains? name, list
44
+ # list.each do |element|
45
+ # pos = name =~ /#{element}/
46
+ # pos = pos.nil? ? -1 : pos
47
+ #
48
+ # return true if pos >=0
49
+ # end
50
+ #
51
+ # false
52
+ # end
53
+
54
+ def match? name, list
55
+ list.each do |pattern|
56
+ return true if File.fnmatch(pattern, name)
57
+ end
58
+
59
+ false
60
+ end
61
+ end
62
+
63
+ def zip params
64
+ zipit = ZipIt.new
65
+
66
+ zipit.create_zip_file(
67
+ :file_name => params[:archive], :dir => params[:dir],
68
+ :global_excludes => ['.svn'], :excludes => ["*.zip"])
69
+ end
data/zipit.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{zipit}
5
+ s.version = "0.1.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+
9
+ s.authors = ["Alexander Shvets"]
10
+ s.date = %q{2010-02-02}
11
+ s.description = %q{Rake helper for zipping/unzipping project files.}
12
+ s.email = %q{alexander.shvets@gmail.com}
13
+
14
+ s.files = ["CHANGES", "zipit.gemspec", "Rakefile", "README", "lib/zip_it.rb"]
15
+
16
+ s.has_rdoc = true
17
+ s.homepage = %q{http://github.com/shvets/zipit}
18
+ s.require_paths = ["lib"]
19
+ s.rubyforge_project = %q{zipit}
20
+ s.rubygems_version = %q{1.3.2}
21
+ s.summary = %q{Rake helper for zipping/unzipping project files.}
22
+
23
+ if s.respond_to? :specification_version then
24
+ s.specification_version = 2
25
+ end
26
+
27
+ s.platform = Gem::Platform::RUBY
28
+ s.requirements = ["none"]
29
+ end
metadata ADDED
@@ -0,0 +1,59 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zipit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Alexander Shvets
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-02-02 00:00:00 -05:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Rake helper for zipping/unzipping project files.
17
+ email: alexander.shvets@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - CHANGES
26
+ - zipit.gemspec
27
+ - Rakefile
28
+ - README
29
+ - lib/zip_it.rb
30
+ has_rdoc: true
31
+ homepage: http://github.com/shvets/zipit
32
+ licenses: []
33
+
34
+ post_install_message:
35
+ rdoc_options: []
36
+
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ requirements:
52
+ - none
53
+ rubyforge_project: zipit
54
+ rubygems_version: 1.3.5
55
+ signing_key:
56
+ specification_version: 2
57
+ summary: Rake helper for zipping/unzipping project files.
58
+ test_files: []
59
+