zipit 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/bin/zipit +0 -2
- data/lib/zipit.rb +48 -29
- data/spec/zipit_spec.rb +41 -0
- data/zipit.gemspec +17 -13
- metadata +28 -13
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.5
|
data/bin/zipit
CHANGED
data/lib/zipit.rb
CHANGED
@@ -1,32 +1,60 @@
|
|
1
1
|
require 'zip/zip'
|
2
2
|
|
3
3
|
class Zipit
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
attr_reader :global_excludes, :includes, :excludes
|
5
|
+
|
6
|
+
def zip_cmd_line params
|
7
|
+
archive = params[0].nil? ? "#{File.basename(Dir.pwd)}.zip" : params[0]
|
8
|
+
dir = params[1].nil? ? "." : params[1]
|
9
|
+
|
10
|
+
@includes = params[:includes].nil? ? [] : params[:includes]
|
11
|
+
@excludes = params[:excludes].nil? ? [] : params[:excludes]
|
7
12
|
@global_excludes = params[:global_excludes].nil? ? [] : params[:global_excludes]
|
13
|
+
|
14
|
+
@excludes += [archive]
|
15
|
+
@global_excludes += ['.svn', '.git']
|
16
|
+
|
17
|
+
create_zip_file(:file_name => archive, :dir => dir)
|
18
|
+
end
|
19
|
+
|
20
|
+
def zip params
|
21
|
+
archive = params[:archive].nil? ? "#{File.basename(Dir.pwd)}.zip" : params[:archive]
|
22
|
+
dir = params[:dir].nil? ? "." : params[:dir]
|
23
|
+
|
8
24
|
@includes = params[:includes].nil? ? [] : params[:includes]
|
9
25
|
@excludes = params[:excludes].nil? ? [] : params[:excludes]
|
26
|
+
@global_excludes = params[:global_excludes].nil? ? [] : params[:global_excludes]
|
27
|
+
|
28
|
+
@excludes += [archive]
|
29
|
+
@global_excludes += ['.svn', '.git']
|
30
|
+
|
31
|
+
create_zip_file(:file_name => archive, :dir => dir)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def create_zip_file params
|
37
|
+
file_name = params[:file_name]
|
38
|
+
dir = params[:dir]
|
10
39
|
|
11
40
|
Zip::ZipOutputStream.open(file_name) do |zos|
|
12
|
-
|
41
|
+
zip_stream(zos, dir, dir)
|
13
42
|
end
|
14
43
|
end
|
15
44
|
|
16
|
-
def
|
45
|
+
def zip_stream zos, name, basedir
|
17
46
|
Dir.new(name).each do |filename|
|
18
47
|
if(filename != '.' and filename != '..')
|
19
48
|
full_name = name + '/' + filename
|
20
49
|
|
21
50
|
if File.directory? full_name
|
22
|
-
|
51
|
+
if not match?(full_name, global_excludes) and not match?(full_name, excludes) and not match?(full_name, includes)
|
52
|
+
zip_stream(zos, full_name, basedir)
|
53
|
+
end
|
23
54
|
else
|
24
55
|
new_name = full_name[basedir.length+1..full_name.length]
|
25
|
-
|
26
|
-
if (match?(new_name,
|
27
|
-
not match?(new_name, @includes)
|
28
|
-
;
|
29
|
-
else
|
56
|
+
|
57
|
+
if not (match?(new_name, global_excludes) and not match?(new_name, excludes)) and not match?(new_name, includes)
|
30
58
|
puts "Adding #{new_name} ..."
|
31
59
|
# Create a new entry with some arbitrary name
|
32
60
|
zos.put_next_entry(new_name)
|
@@ -37,34 +65,25 @@ class Zipit
|
|
37
65
|
end
|
38
66
|
end
|
39
67
|
end
|
40
|
-
|
68
|
+
|
41
69
|
def match? name, list
|
42
70
|
list.each do |pattern|
|
43
|
-
return true if File.fnmatch(pattern, name) or name =~
|
71
|
+
return true if File.fnmatch(pattern, name) or name =~ /#{pattern}/
|
44
72
|
end
|
45
73
|
|
46
74
|
false
|
47
|
-
end
|
75
|
+
end
|
76
|
+
|
48
77
|
end
|
49
78
|
|
50
|
-
def
|
79
|
+
def zip params
|
51
80
|
zipit = Zipit.new
|
52
81
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
zipit.create_zip_file(
|
57
|
-
:file_name => archive, :dir => dir,
|
58
|
-
:global_excludes => ['.svn', '.git'], :excludes => [archive])
|
59
|
-
end
|
82
|
+
zipit.zip params
|
83
|
+
end
|
60
84
|
|
61
|
-
def
|
85
|
+
def zip_cmd_line params
|
62
86
|
zipit = Zipit.new
|
63
|
-
|
64
|
-
archive = params[:archive].nil? ? "#{File.basename(Dir.pwd)}.zip" : params[:archive]
|
65
|
-
dir = params[:dir].nil? ? "." : params[:dir]
|
66
87
|
|
67
|
-
zipit.
|
68
|
-
:file_name => archive, :dir => dir,
|
69
|
-
:global_excludes => ['.svn', '.git'], :excludes => [archive])
|
88
|
+
zipit.zip_cmd_line params
|
70
89
|
end
|
data/spec/zipit_spec.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# zipit_spec.rb
|
2
|
+
|
3
|
+
require 'zipit'
|
4
|
+
|
5
|
+
describe Zipit do
|
6
|
+
context "create zip archive from the dir" do
|
7
|
+
subject { Zipit.new }
|
8
|
+
|
9
|
+
before do
|
10
|
+
`mkdir -pv test/.svn`
|
11
|
+
`mkdir -pv test/test1/.svn`
|
12
|
+
`cp zipit_spec.rb test/test1/.svn`
|
13
|
+
|
14
|
+
`mkdir -pv test/test1/test2/test3`
|
15
|
+
`mkdir -pv test/test4/test5/test6/test7`
|
16
|
+
`cp zipit_spec.rb test/test1/test2/test3`
|
17
|
+
`cp zipit_spec.rb test/test4/test5/test6/test7`
|
18
|
+
end
|
19
|
+
|
20
|
+
after do
|
21
|
+
`rm -r test`
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should create new archive" do
|
25
|
+
subject.zip :archive => "../test1.zip", :dir => "test"
|
26
|
+
|
27
|
+
Zip::ZipFile.open("../test1.zip") do |zipfile|
|
28
|
+
zipfile.find_entry('test1/test2/test3/zipit_spec.rb').should_not be_nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should not include test2" do
|
33
|
+
subject.zip :archive => "../test2.zip", :dir => "test", :excludes => ["test2"]
|
34
|
+
|
35
|
+
Zip::ZipFile.open("../test2.zip") do |zipfile|
|
36
|
+
zipfile.find_entry('test1/test2/test3/zipit_spec.rb').should be_nil
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
data/zipit.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{zipit}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Alexander Shvets"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2011-08-26}
|
13
13
|
s.default_executable = %q{zipit}
|
14
14
|
s.description = %q{Rake helper for zipping/unzipping project files.}
|
15
15
|
s.email = %q{alexander.shvets@gmail.com}
|
@@ -19,31 +19,35 @@ Gem::Specification.new do |s|
|
|
19
19
|
]
|
20
20
|
s.files = [
|
21
21
|
"CHANGES",
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
"README",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"bin/zipit",
|
26
|
+
"bin/zipit.bat",
|
27
|
+
"lib/zipit.rb",
|
28
|
+
"zipit.gemspec"
|
29
29
|
]
|
30
30
|
s.homepage = %q{http://github.com/shvets/zipit}
|
31
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
32
31
|
s.require_paths = ["lib"]
|
33
32
|
s.requirements = ["none"]
|
34
|
-
s.rubygems_version = %q{1.
|
33
|
+
s.rubygems_version = %q{1.6.2}
|
35
34
|
s.summary = %q{Rake helper for zipping/unzipping project files. (Summary).}
|
35
|
+
s.test_files = [
|
36
|
+
"spec/zipit_spec.rb"
|
37
|
+
]
|
36
38
|
|
37
39
|
if s.respond_to? :specification_version then
|
38
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
39
40
|
s.specification_version = 3
|
40
41
|
|
41
42
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
43
|
+
s.add_runtime_dependency(%q<zip>, [">= 0"])
|
42
44
|
s.add_runtime_dependency(%q<rubyzip>, [">= 0.9.4"])
|
43
45
|
else
|
46
|
+
s.add_dependency(%q<zip>, [">= 0"])
|
44
47
|
s.add_dependency(%q<rubyzip>, [">= 0.9.4"])
|
45
48
|
end
|
46
49
|
else
|
50
|
+
s.add_dependency(%q<zip>, [">= 0"])
|
47
51
|
s.add_dependency(%q<rubyzip>, [">= 0.9.4"])
|
48
52
|
end
|
49
53
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zipit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 5
|
10
|
+
version: 0.3.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alexander Shvets
|
@@ -15,13 +15,27 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-08-26 00:00:00 -04:00
|
19
19
|
default_executable: zipit
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
name: rubyzip
|
23
22
|
prerelease: false
|
23
|
+
type: :runtime
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
name: zip
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
prerelease: false
|
37
|
+
type: :runtime
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
25
39
|
none: false
|
26
40
|
requirements:
|
27
41
|
- - ">="
|
@@ -32,8 +46,8 @@ dependencies:
|
|
32
46
|
- 9
|
33
47
|
- 4
|
34
48
|
version: 0.9.4
|
35
|
-
|
36
|
-
version_requirements: *
|
49
|
+
name: rubyzip
|
50
|
+
version_requirements: *id002
|
37
51
|
description: Rake helper for zipping/unzipping project files.
|
38
52
|
email: alexander.shvets@gmail.com
|
39
53
|
executables:
|
@@ -51,13 +65,14 @@ files:
|
|
51
65
|
- bin/zipit.bat
|
52
66
|
- lib/zipit.rb
|
53
67
|
- zipit.gemspec
|
68
|
+
- spec/zipit_spec.rb
|
54
69
|
has_rdoc: true
|
55
70
|
homepage: http://github.com/shvets/zipit
|
56
71
|
licenses: []
|
57
72
|
|
58
73
|
post_install_message:
|
59
|
-
rdoc_options:
|
60
|
-
|
74
|
+
rdoc_options: []
|
75
|
+
|
61
76
|
require_paths:
|
62
77
|
- lib
|
63
78
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -81,9 +96,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
96
|
requirements:
|
82
97
|
- none
|
83
98
|
rubyforge_project:
|
84
|
-
rubygems_version: 1.
|
99
|
+
rubygems_version: 1.6.2
|
85
100
|
signing_key:
|
86
101
|
specification_version: 3
|
87
102
|
summary: Rake helper for zipping/unzipping project files. (Summary).
|
88
|
-
test_files:
|
89
|
-
|
103
|
+
test_files:
|
104
|
+
- spec/zipit_spec.rb
|