Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more

In Files

  • rake/contrib/sys.rb

Sys

Sys provides a number of file manipulation tools for the convenience of writing Rakefiles. All commands in this module will announce their activity on standard output if the $verbose flag is set ($verbose = true is the default). You can control this by globally setting $verbose or by using the verbose and quiet methods.

Sys has been deprecated in favor of the FileUtils module available in Ruby 1.8.

Constants

RUBY

Public Instance Methods

copy(file_name, dest_file) click to toggle source

Copy a single file from file_name to dest_file.

 
               # File rake/contrib/sys.rb, line 47
def copy(file_name, dest_file)
  log "Copying file #{file_name} to #{dest_file}"
  File.copy(file_name, dest_file)
end
            
copy_files(wildcard, dest_dir) click to toggle source

Copy all files matching wildcard into the directory dest_dir.

 
               # File rake/contrib/sys.rb, line 53
def copy_files(wildcard, dest_dir)
  for_matching_files(wildcard, dest_dir) { |from, to| copy(from, to) }
end
            
delete(*wildcards) click to toggle source

Remove all files matching wildcard. If a matching file is a directory, it must be empty to be removed. used delete_all to recursively delete directories.

 
               # File rake/contrib/sys.rb, line 82
def delete(*wildcards)
  wildcards.each do |wildcard|
    Dir[wildcard].each do |fn|
      if File.directory?(fn)
        log "Deleting directory #{fn}"
        Dir.delete(fn)
      else
        log "Deleting file #{fn}"
        File.delete(fn)
      end
    end
  end
end
            
delete_all(*wildcards) click to toggle source

Recursively delete all files and directories matching wildcard.

 
               # File rake/contrib/sys.rb, line 97
def delete_all(*wildcards)
  wildcards.each do |wildcard|
    Dir[wildcard].each do |fn|
      next if ! File.exist?(fn)
      if File.directory?(fn)
        Dir["#{fn}/*"].each do |subfn|
          next if subfn=='.' || subfn=='..'
          delete_all(subfn)
        end
        log "Deleting directory #{fn}"
        Dir.delete(fn)
      else
        log "Deleting file #{fn}"
        File.delete(fn)
      end
    end
  end
end
            
for_files(*wildcards) click to toggle source

Perform a block with each file matching a set of wildcards.

 
               # File rake/contrib/sys.rb, line 162
def for_files(*wildcards)
  wildcards.each do |wildcard|
    Dir[wildcard].each do |fn|
      yield(fn)
    end
  end
end
            
indir(dir) click to toggle source

Make dir the current working directory for the duration of executing the given block.

 
               # File rake/contrib/sys.rb, line 126
def indir(dir)
  olddir = Dir.pwd
  Dir.chdir(dir)
  yield
ensure
  Dir.chdir(olddir)
end
            
install(wildcard, dest_dir, mode) click to toggle source

Install all the files matching wildcard into the dest_dir directory. The permission mode is set to mode.

 
               # File rake/contrib/sys.rb, line 29
def install(wildcard, dest_dir, mode)
  Dir[wildcard].each do |fn|
    File.install(fn, dest_dir, mode, $verbose)
  end
end
            
log(msg) click to toggle source

Write a message to standard error if $verbose is enabled.

 
               # File rake/contrib/sys.rb, line 146
def log(msg)
  print "  " if $trace && $verbose
  $stderr.puts msg if $verbose
end
            
makedirs(*dirs) click to toggle source

Make the directories given in dirs.

 
               # File rake/contrib/sys.rb, line 117
def makedirs(*dirs)
  dirs.each do |fn|
    log "Making directory #{fn}"
    File.makedirs(fn)
  end
end
            
quiet(&block) click to toggle source

Perform a block with $verbose disabled.

 
               # File rake/contrib/sys.rb, line 152
def quiet(&block)
  with_verbose(false, &block)
end
            
ruby(*args) click to toggle source

Run a Ruby interpreter with the given arguments.

 
               # File rake/contrib/sys.rb, line 42
def ruby(*args)
  run "#{RUBY} #{args.join(' ')}"
end
            
run(cmd) click to toggle source

Run the system command cmd.

 
               # File rake/contrib/sys.rb, line 36
def run(cmd)
  log cmd
  system(cmd) or fail "Command Failed: [#{cmd}]"
end
            
split_all(path) click to toggle source

Split a file path into individual directory names.

For example:

split_all("a/b/c") =>  ['a', 'b', 'c']
 
               # File rake/contrib/sys.rb, line 138
def split_all(path)
  head, tail = File.split(path)
  return [tail] if head == '.' || tail == '/'
  return [head, tail] if head == '/'
  return split_all(head) + [tail]
end
            
verbose(&block) click to toggle source

Perform a block with $verbose enabled.

 
               # File rake/contrib/sys.rb, line 157
def verbose(&block)
  with_verbose(true, &block)
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.