dir_dsl 1.0.1 → 1.0.2
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.
- checksums.yaml +8 -8
- data/CHANGES +4 -0
- data/lib/dir_dsl/dir_dsl.rb +65 -12
- data/lib/dir_dsl/version.rb +1 -1
- data/spec/dir_dsl_spec.rb +10 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzZlZDc2YTZmYmE3NzRiYzE3OTQ2MDI4MTVkNDI2ZjRjNDQ0MTQ2NQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OGRiOTZhODNhMDI1ZDNiYmYwNzBjNDliODhjMzMxOTFhMDRiOWU5OA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MmFlN2MxOTU5MTMzYTE1ODZlZmMyNGE3NWU2NzFiM2IxZjJmMzM2OGQxZWMw
|
10
|
+
NTNiOTAxMTFhNWZkMjE1YmUxMjE4NWMyYzAxYTdhYWY3MmNhNTVjYzUyY2Nh
|
11
|
+
NGQ0OTBmYjYyMGMyNjIzMjNmZWZkMDdkNTM3MmQyZmY4YzE1MDE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZDViMTJiMTFiNjZkMzgxOTFhYzQzN2RhYzQ0YzE5N2JkNzMxYTQ2ZjVhYTRl
|
14
|
+
MTM3NTc0Zjc1YmNkZjdjNDZmNzkwMzg1YzQxZDQwZjM4NDY4MTUxMTQ4ZGI0
|
15
|
+
OTY5YzU3OGM0NmVjZDcyNDZhOGNmYTJlNTBiMjM3ZDNkNjExOTk=
|
data/CHANGES
CHANGED
data/lib/dir_dsl/dir_dsl.rb
CHANGED
@@ -8,12 +8,17 @@ class DirDSL
|
|
8
8
|
def initialize from_root, to_root
|
9
9
|
@from_root = File.expand_path(from_root)
|
10
10
|
@to_root = File.expand_path(to_root)
|
11
|
+
@global_ignores = []
|
11
12
|
end
|
12
13
|
|
13
14
|
def build(&block)
|
14
15
|
self.instance_eval(&block)
|
15
16
|
end
|
16
17
|
|
18
|
+
def global_ignore ignore
|
19
|
+
@global_ignores << ignore
|
20
|
+
end
|
21
|
+
|
17
22
|
def entry_exist? entry_name
|
18
23
|
File.exist? "#{to_root}/#{entry_name}"
|
19
24
|
end
|
@@ -30,7 +35,7 @@ class DirDSL
|
|
30
35
|
end
|
31
36
|
|
32
37
|
def list dir="."
|
33
|
-
list = pattern_to_files"#{from_root}/#{dir}", "**/*"
|
38
|
+
list = pattern_to_files "#{from_root}/#{dir}", "**/*"
|
34
39
|
|
35
40
|
list.each_with_index do |name, index|
|
36
41
|
list[index] = name["#{from_root}/#{dir}".length+1..-1]
|
@@ -59,11 +64,7 @@ class DirDSL
|
|
59
64
|
end
|
60
65
|
|
61
66
|
def directory params
|
62
|
-
if params[:from_dir]
|
63
|
-
to_dir = "#{to_root}/#{params[:to_dir]}"
|
64
|
-
|
65
|
-
create_directory to_dir unless File.exist? to_dir
|
66
|
-
else
|
67
|
+
if params[:from_dir]
|
67
68
|
if params[:to_dir] == "." || params[:to_dir].nil?
|
68
69
|
to_dir = params[:from_dir]
|
69
70
|
else
|
@@ -71,22 +72,74 @@ class DirDSL
|
|
71
72
|
end
|
72
73
|
|
73
74
|
filter = params[:filter].nil? ? "**/*" : params[:filter]
|
75
|
+
excludes = parse_excludes(params[:excludes])
|
76
|
+
|
77
|
+
copy_files_with_excludes "#{from_root}/#{params[:from_dir]}", "#{to_root}/#{to_dir}", filter, excludes
|
78
|
+
else
|
79
|
+
to_dir = "#{to_root}/#{params[:to_dir]}"
|
74
80
|
|
75
|
-
|
81
|
+
create_directory to_dir unless File.exist? to_dir
|
76
82
|
end
|
77
83
|
end
|
78
84
|
|
79
85
|
private
|
80
86
|
|
81
87
|
def to_dir dir, name
|
82
|
-
|
83
|
-
|
84
|
-
|
88
|
+
dir = File.dirname(name) unless dir
|
89
|
+
|
90
|
+
if dir == "."
|
91
|
+
to_root
|
92
|
+
else
|
93
|
+
"#{to_root}/#{dir}"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def parse_excludes excludes
|
98
|
+
if excludes
|
99
|
+
excludes.split(",").map(&:strip)
|
85
100
|
else
|
86
|
-
|
101
|
+
[]
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def copy_files_with_excludes from_dir, to_dir, pattern, excludes
|
106
|
+
create_directory to_dir
|
107
|
+
|
108
|
+
files = pattern_to_files from_dir, pattern
|
109
|
+
|
110
|
+
files.each do |file|
|
111
|
+
if File.file? file and not file_excluded(file, excludes)
|
112
|
+
FileUtils.cp(file, to_dir)
|
113
|
+
elsif File.directory?(file) and not dir_in_global_ignores(file, @global_ignores)
|
114
|
+
FileUtils.mkdir_p file
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def dir_in_global_ignores dir, global_ignores
|
120
|
+
ignored = false
|
121
|
+
|
122
|
+
global_ignores.each do |exclude|
|
123
|
+
if dir =~ /#{exclude}/
|
124
|
+
ignored = true
|
125
|
+
break
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
ignored
|
130
|
+
end
|
131
|
+
|
132
|
+
def file_excluded(file, excludes)
|
133
|
+
excluded = false
|
134
|
+
|
135
|
+
excludes.each do |exclude|
|
136
|
+
if file =~ /#{exclude}/
|
137
|
+
excluded = true
|
138
|
+
break
|
139
|
+
end
|
87
140
|
end
|
88
141
|
|
89
|
-
|
142
|
+
excluded
|
90
143
|
end
|
91
144
|
|
92
145
|
end
|
data/lib/dir_dsl/version.rb
CHANGED
data/spec/dir_dsl_spec.rb
CHANGED
@@ -69,7 +69,7 @@ describe DirDSL do
|
|
69
69
|
directory :from_dir => "spec"
|
70
70
|
end
|
71
71
|
|
72
|
-
subject.
|
72
|
+
subject.entry_exist?("spec/spec_helper.rb").should be_true
|
73
73
|
end
|
74
74
|
|
75
75
|
it "should display files in specified subdirectory" do
|
@@ -77,7 +77,15 @@ describe DirDSL do
|
|
77
77
|
directory :from_dir => "lib"
|
78
78
|
end
|
79
79
|
|
80
|
-
subject.
|
80
|
+
subject.entry_exist?("lib/dir_dsl.rb").should be_true
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should exclude files from result" do
|
84
|
+
subject.build do
|
85
|
+
directory :from_dir => "lib", :excludes => "version.rb"
|
86
|
+
end
|
87
|
+
|
88
|
+
subject.entry_exist?("lib/version.rb").should be_false
|
81
89
|
end
|
82
90
|
|
83
91
|
end
|