z_build 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/z_build.rb +53 -12
  2. metadata +3 -3
@@ -7,10 +7,11 @@ require 'tempfile'
7
7
  # light-weight build processes, written in Ruby. This library was authored in my spare time
8
8
  # for {https://zoosk.com Zoosk} with a desire for more easily maintainable build processes,
9
9
  # with a love for Ruby, and with a strong dislike for PHING/ANT and XML builds systems.
10
- # At it's core the Z'Build suite is intended to be minimal, sufficient, and transparent.
11
- # If there is some aspect of your existing build that cannot be translated or mimicked
12
- # with a series of Z'Build functions, then there may well be a missing feature, or
13
- # otherwise there might be an opportunity to simplify your processes. However, it is
10
+ # Z'Build mostly concerns itself with directory creation, file copying, token replacement,
11
+ # and relative path management. At it's core the Z'Build suite is intended to be minimal,
12
+ # sufficient, and transparent. If there is some aspect of your existing build that cannot
13
+ # be translated or mimicked with a series of Z'Build functions, then there may well be a missing
14
+ # feature, or otherwise there might be an opportunity to simplify your processes. However, it is
14
15
  # expected that custom needs will require specialized code and as a library Z'Build is
15
16
  # designed to be easily extended and works very well in conjuncation with build tools
16
17
  # such as Ruby Rake. It is not meant to be a stand-alone build replacement - Rake/Thor/etc
@@ -211,10 +212,30 @@ module ZBuild
211
212
  queued_dirs = []
212
213
  queued_files = {}
213
214
  working_exclude = opts[:exclude] ? opts[:exclude].to_a : []
215
+
216
+ # normalize excluded file relative path notations
217
+ working_exclude = working_exclude.collect do |e|
218
+ p = e.clone
219
+ p = p.sub('./', '')
220
+
221
+ # when working path is relative to root, walk path will return paths relative to root as well
222
+ # so ensure all exclusion paths are also relative to root
223
+ if from.start_with?('/') && !p.start_with?('/')
224
+ p = File.join('/', p)
225
+ elsif from.start_with?('./') && !p.start_with?('./')
226
+ p = File.join('./', p)
227
+ end
228
+
229
+ if p.end_with? '/'
230
+ p = p[0, p.size - 1]
231
+ end
232
+
233
+ p
234
+ end
214
235
 
215
236
  if opts[:recurse]
216
237
 
217
- if !File.directory? from
238
+ if !File.directory? working_path_given
218
239
  raise "Working path must be a directory when :recurse => true, given: #{working_path_given}"
219
240
  end
220
241
 
@@ -233,9 +254,16 @@ module ZBuild
233
254
 
234
255
  # from - the directory relative to working dir
235
256
  # deploy_path_given - the directory relative to the deploy dir
236
-
237
257
  self.walk_path(from) do |f_path, is_dir|
238
- if working_exclude.include? f_path.sub('./','') # glob prefixes ./ relative to root
258
+ should_exclude = false
259
+ working_exclude.each do |e|
260
+ if f_path.start_with? e
261
+ should_exclude = true
262
+ break
263
+ end
264
+ end
265
+
266
+ if should_exclude
239
267
  # ignore files or directories marked for exclusion
240
268
  next
241
269
  end
@@ -265,10 +293,23 @@ module ZBuild
265
293
  end
266
294
 
267
295
  self.glob(from) do |f_path, is_dir|
268
- if working_exclude.include? f_path.sub('./','') # glob prefixes ./ relative to root
269
- # ignore files or directories marked for exclusion
270
- next
271
- end
296
+ should_exclude = false
297
+ working_exclude.each do |e|
298
+ f_path_normalized = e
299
+ if f_path_normalized.start_with?('./') && !e.start_with?('./')
300
+ f_path_normalized = f_path_normalized.sub('./', '')
301
+ end
302
+
303
+ if f_path_normalized.start_with? e
304
+ should_exclude = true
305
+ break
306
+ end
307
+ end
308
+
309
+ if should_exclude
310
+ # ignore files or directories marked for exclusion
311
+ next
312
+ end
272
313
 
273
314
  if File.directory? deploy_path_given
274
315
  # given dir, so retain name of original file
@@ -277,7 +318,7 @@ module ZBuild
277
318
  # deploy_path given is an actual file target
278
319
  dest_path = deploy_path_given
279
320
  end
280
-
321
+
281
322
  # f_path provided is relative to working dir - dest is absolute to deploy target
282
323
  queued_files[f_path] = dest_path
283
324
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 1
8
- - 1
9
- version: 1.1.1
8
+ - 2
9
+ version: 1.1.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Shaun Bruno
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2013-03-31 00:00:00 -07:00
17
+ date: 2013-04-15 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies: []
20
20