Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ def execute(cleanup_file)
if File.symlink?(@source)
FileUtils.symlink(File.readlink(@source), @destination)
else
FileUtils.copy(@source, @destination, :preserve => true)
FileUtils.cp_r(@source, @destination, :preserve => true)
end
end

Expand Down
49 changes: 7 additions & 42 deletions lib/instance_agent/plugins/codedeploy/installer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -64,60 +64,25 @@ def generate_instructions(application_specification)
fi.source)

log(:debug, "generating instructions for copying #{fi.source} to #{fi.destination}")
if File.directory?(absolute_source_path)
fill_in_missing_ancestors(i, fi.destination)
generate_directory_copy(i, absolute_source_path, fi.destination)
else
file_destination = File.join(fi.destination, File.basename(absolute_source_path))
fill_in_missing_ancestors(i, file_destination)
generate_normal_copy(i, absolute_source_path, file_destination)
end
fill_in_missing_ancestors(i, fi.destination)
generate_copy(i, absolute_source_path, fi.destination)
end

(application_specification.permissions || []).each do |permission|
object = permission.object

log(:debug, "generating instructions for setting permissions on object #{object}")
log(:debug, "it is an existing directory - #{File.directory?(object)}")
if i.copying_file?(object)
if permission.type.include?("file")
log(:debug, "found matching file #{object} to set permissions on")
permission.validate_file_permission
permission.validate_file_acl(object)
i.set_permissions(object, permission)
end
elsif (i.making_directory?(object) || File.directory?(object))
log(:debug, "found matching directory #{object} to search for objects to set permissions on")
i.find_matches(permission).each do|match|
log(:debug, "found matching object #{match} to set permissions on")
i.set_permissions(match, permission)
end
log(:debug, "found matching directory #{object} to search for objects to set permissions on")
i.find_matches(permission).each do|match|
log(:debug, "found matching object #{match} to set permissions on")
i.set_permissions(match, permission)
end
end
end
end

private
def generate_directory_copy(i, absolute_source_path, destination)
unless File.directory?(destination)
i.mkdir(destination)
end

(Dir.entries(absolute_source_path) - [".", ".."]).each do |entry|
entry = entry.force_encoding("UTF-8");
absolute_source_path = absolute_source_path.force_encoding("UTF-8");
absolute_entry_path = File.join(absolute_source_path, entry)
entry_destination = File.join(destination, entry)
if File.directory?(absolute_entry_path)
generate_directory_copy(i, absolute_entry_path, entry_destination)
else
generate_normal_copy(i, absolute_entry_path, entry_destination)
end
end
end

private
def generate_normal_copy(i, absolute_source_path, destination)
def generate_copy(i, absolute_source_path, destination)
if File.exists?(destination)
case @file_exists_behavior
when "DISALLOW"
Expand Down