Sha256: f54d7077064aa63c2e3f8ce414d6d208ef0650419f0d897069d2f96a08d59073

Contents?: true

Size: 808 Bytes

Versions: 12

Compression:

Stored size: 808 Bytes

Contents

require 'fileutils'

require 'murlsh'

module Murlsh

  module_function

  # Recursive copy from sources to destination but ask before overwriting.
  #
  # Options are passed into FileUtils.mkdir_p FileUtils.copy.
  def cp_r_safe(sources, dest, options)
    sources.each do |source|
      new = File.join(dest, File.split(File.expand_path(source)).last)

      if File.directory?(source)
        FileUtils.mkdir_p(new, options)
        cp_r_safe(Dir.entries(source).
          reject { |f| %w{. ..}.include?(f) }.
          map { |f| File.join(source, f) }, new, options)
      else
        answer = if File.exists?(new)
          Murlsh.ask("#{new} exists. Overwrite?", 'n')
        else
          'y'
        end

        FileUtils.copy(source, new, options)  if answer == 'y'
      end
    end
  end

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
murlsh-1.9.3 lib/murlsh/cp_r_safe.rb
murlsh-1.9.2 lib/murlsh/cp_r_safe.rb
murlsh-1.9.1 lib/murlsh/cp_r_safe.rb
murlsh-1.9.0 lib/murlsh/cp_r_safe.rb
murlsh-1.8.0 lib/murlsh/cp_r_safe.rb
murlsh-1.7.1 lib/murlsh/cp_r_safe.rb
murlsh-1.7.0 lib/murlsh/cp_r_safe.rb
murlsh-1.6.1 lib/murlsh/cp_r_safe.rb
murlsh-1.6.0 lib/murlsh/cp_r_safe.rb
murlsh-1.5.0 lib/murlsh/cp_r_safe.rb
murlsh-1.4.1 lib/murlsh/cp_r_safe.rb
murlsh-1.4.0 lib/murlsh/cp_r_safe.rb