lib/capistrano/middleman/utils.rb in capistrano-middleman-0.1.0 vs lib/capistrano/middleman/utils.rb in capistrano-middleman-0.1.3

- old
+ new

@@ -1,8 +1,27 @@ module Capistrano module Middleman + # Utils module Utils + # Create zip archive from source directory + # + # @param [String] source_directory + # The directory + # @param [String] destination_file + # Name of the zip file + # @param [String] prefix + # Prefix inside zip file + # @param [String] working_directory + # The directory where rubyzip should change to + # @param [Array] exclude_patterns + # Ignore files matching patterns + # @param [TrueClass, FalseClass] keep_filesystem_permissions + # Record permissions in file system + # @param [OctalNumber] file_permissions + # Permissions for files + # @param [OctalNumber] directory_permissions + # Permissions for directories def zip( source_directory, destination_file, prefix: nil, working_directory: Dir.getwd, @@ -14,19 +33,19 @@ list = Rake::FileList.new(File.join(source_directory, '**', '*')) list.exclude { |f| !File.file? f } exclude_patterns.each { |e| list.exclude e } Zip::File.open(destination_file, Zip::File::CREATE) do |z| - list.each do |filename| + list.uniq.each do |filename| paths = [] paths << Pathname.new(prefix) unless prefix.nil? || prefix.empty? paths << Pathname.new(filename).relative_path_from(Pathname.new(working_directory)) z.add(File.join(*paths), File.expand_path(filename)) next if keep_filesystem_permissions - z.file.chmod(file_permissions , File.join(*paths)) if z.file.file? File.join(*paths) + z.file.chmod(file_permissions, File.join(*paths)) if z.file.file? File.join(*paths) z.file.chmod(directory_permissions, File.join(*paths)) if z.file.directory? File.join(*paths) end end end