knife-essentials 0.7 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/chef_fs/file_system.rb +12 -10
- data/lib/chef_fs/version.rb +1 -1
- metadata +1 -1
data/lib/chef_fs/file_system.rb
CHANGED
@@ -98,7 +98,8 @@ module ChefFS
|
|
98
98
|
found_result = false
|
99
99
|
list_pairs(pattern, src_root, dest_root) do |src, dest|
|
100
100
|
found_result = true
|
101
|
-
|
101
|
+
new_dest_parent = get_or_create_parent(dest, options)
|
102
|
+
copy_entries(src, dest, new_dest_parent, recurse_depth, options)
|
102
103
|
end
|
103
104
|
if !found_result && pattern.exact_path
|
104
105
|
puts "#{pattern}: No such file or directory on remote or local"
|
@@ -196,7 +197,7 @@ module ChefFS
|
|
196
197
|
private
|
197
198
|
|
198
199
|
# Copy two entries (could be files or dirs)
|
199
|
-
def self.copy_entries(src_entry, dest_entry, recurse_depth, options)
|
200
|
+
def self.copy_entries(src_entry, dest_entry, new_dest_parent, recurse_depth, options)
|
200
201
|
# A NOTE about this algorithm:
|
201
202
|
# There are cases where this algorithm does too many network requests.
|
202
203
|
# knife upload with a specific filename will first check if the file
|
@@ -224,28 +225,27 @@ module ChefFS
|
|
224
225
|
end
|
225
226
|
|
226
227
|
elsif !dest_entry.exists?
|
227
|
-
|
228
|
-
if dest_parent.can_have_child?(src_entry.name, src_entry.dir?)
|
228
|
+
if new_dest_parent.can_have_child?(src_entry.name, src_entry.dir?)
|
229
229
|
if src_entry.dir?
|
230
230
|
if options[:dry_run]
|
231
231
|
puts "Would create #{dest_entry.path_for_printing}"
|
232
|
-
new_dest_dir =
|
232
|
+
new_dest_dir = new_dest_parent.child(src_entry.name)
|
233
233
|
else
|
234
|
-
new_dest_dir =
|
234
|
+
new_dest_dir = new_dest_parent.create_child(src_entry.name, nil)
|
235
235
|
puts "Created #{dest_entry.path_for_printing}/"
|
236
236
|
end
|
237
237
|
# Directory creation is recursive.
|
238
238
|
if recurse_depth != 0
|
239
239
|
src_entry.children.each do |src_child|
|
240
240
|
new_dest_child = new_dest_dir.child(src_child.name)
|
241
|
-
copy_entries(src_child, new_dest_child, recurse_depth ? recurse_depth - 1 : recurse_depth, options)
|
241
|
+
copy_entries(src_child, new_dest_child, new_dest_dir, recurse_depth ? recurse_depth - 1 : recurse_depth, options)
|
242
242
|
end
|
243
243
|
end
|
244
244
|
else
|
245
245
|
if options[:dry_run]
|
246
246
|
puts "Would create #{dest_entry.path_for_printing}"
|
247
247
|
else
|
248
|
-
|
248
|
+
new_dest_parent.create_child(src_entry.name, src_entry.read)
|
249
249
|
puts "Created #{dest_entry.path_for_printing}"
|
250
250
|
end
|
251
251
|
end
|
@@ -274,7 +274,7 @@ module ChefFS
|
|
274
274
|
# If both are directories, recurse into their children
|
275
275
|
if recurse_depth != 0
|
276
276
|
child_pairs(src_entry, dest_entry).each do |src_child, dest_child|
|
277
|
-
copy_entries(src_child, dest_child, recurse_depth ? recurse_depth - 1 : recurse_depth, options)
|
277
|
+
copy_entries(src_child, dest_child, dest_entry, recurse_depth ? recurse_depth - 1 : recurse_depth, options)
|
278
278
|
end
|
279
279
|
end
|
280
280
|
else
|
@@ -314,7 +314,9 @@ module ChefFS
|
|
314
314
|
parent = entry.parent
|
315
315
|
if !parent.exists?
|
316
316
|
parent_parent = get_or_create_parent(entry.parent, options)
|
317
|
-
if
|
317
|
+
if options[:dry_run]
|
318
|
+
puts "Would create #{parent.path_for_printing}"
|
319
|
+
else
|
318
320
|
parent = parent_parent.create_child(parent.name, true)
|
319
321
|
puts "Created #{parent.path_for_printing}"
|
320
322
|
end
|
data/lib/chef_fs/version.rb
CHANGED