Module: FileUtils

Defined in:
lib/berkshelf/core_ext/fileutils.rb

Defined Under Namespace

Classes: Entry_

Class Method Summary collapse

Class Method Details

.link_entry(src, dest, dereference_root = false, force = false) ⇒ Object

Hard links a file system entry src to dest. If src is a directory, this method links its contents recursively.

Both of src and dest must be a path name. src must exist, dest must not exist.

If dereference_root is true, this method dereference tree root.

If force is true, this method removes each destination file before copy.



52
53
54
55
56
57
58
# File 'lib/berkshelf/core_ext/fileutils.rb', line 52

def link_entry(src, dest, dereference_root = false, force = false)
  Entry_.new(src, nil, dereference_root).traverse do |ent|
    destent = Entry_.new(dest, ent.rel, false)
    File.unlink destent.path if force && File.file?(destent.path)
    ent.link destent.path
  end
end

.ln_r(src, dest, options = {}) ⇒ Object

Note:

taken from proposed FileUtils feature:

Options: noop verbose dereference_root force

Hard link src to dest. If src is a directory, this method links all its contents recursively. If dest is a directory, links src to dest/src.

src can be a list of files.

# Installing ruby library "mylib" under the site_ruby
FileUtils.rm_r site_ruby + '/mylib', :force
FileUtils.ln_r 'lib/', site_ruby + '/mylib'

# Examples of copying several files to target directory.
FileUtils.ln_r %w(mail.rb field.rb debug/), site_ruby + '/tmail'
FileUtils.ln_r Dir.glob('*.rb'), '/home/aamine/lib/ruby', :noop => true, :verbose => true

# If you want to copy all contents of a directory instead of the
# directory itself, c.f. src/x -> dest/x, src/y -> dest/y,
# use following code.
FileUtils.ln_r 'src/.', 'dest'     # cp_r('src', 'dest') makes src/dest,
                                   # but this doesn't.


27
28
29
30
31
32
33
34
35
36
# File 'lib/berkshelf/core_ext/fileutils.rb', line 27

def ln_r(src, dest, options = {})
  fu_check_options options, OPT_TABLE['ln_r']
  fu_output_message "ln -r#{options[:force] ? ' --remove-destination' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
  return if options[:noop]
  options = options.dup
  options[:dereference_root] = true unless options.key?(:dereference_root)
  fu_each_src_dest(src, dest) do |s, d|
    link_entry s, d, options[:dereference_root], options[:force]
  end
end