Module
Sys
In: lib/rake/contrib/sys.rb

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.

Methods

copy, copy_files, delete, delete_all, for_files, indir, install, link, link_files, log, makedirs, quiet, ruby, run, split_all, symlink, symlink_files, verbose,
Public Instance methods
copy(file_name, dest_file)

Copy a single file from file_name to dest_file.

    # File lib/rake/contrib/sys.rb, line 47
47:   def copy(file_name, dest_file)
48:     log "Copying file #{file_name} to #{dest_file}"
49:     File.copy(file_name, dest_file)
50:   end
copy_files(wildcard, dest_dir)

Copy all files matching wildcard into the directory dest_dir.

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

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 lib/rake/contrib/sys.rb, line 82
82:   def delete(*wildcards)
83:     wildcards.each do |wildcard|
84:       Dir[wildcard].each do |fn|
85:         if File.directory?(fn)
86:           log "Deleting directory #{fn}"
87:           Dir.delete(fn)
88:         else
89:           log "Deleting file #{fn}"
90:           File.delete(fn)
91:         end
92:       end
93:     end
94:   end
delete_all(*wildcards)

Recursively delete all files and directories matching wildcard.

     # File lib/rake/contrib/sys.rb, line 97
 97:   def delete_all(*wildcards)
 98:     wildcards.each do |wildcard|
 99:       Dir[wildcard].each do |fn|
100:         next if ! File.exist?(fn)
101:         if File.directory?(fn)
102:           Dir["#{fn}/*"].each do |subfn|
103:             next if subfn=='.' || subfn=='..'
104:             delete_all(subfn)
105:           end
106:           log "Deleting directory #{fn}"
107:           Dir.delete(fn)
108:         else
109:           log "Deleting file #{fn}"
110:           File.delete(fn)
111:         end
112:       end
113:     end
114:   end
for_files(*wildcards) {|fn| ...}

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

     # File lib/rake/contrib/sys.rb, line 162
162:   def for_files(*wildcards)
163:     wildcards.each do |wildcard|
164:       Dir[wildcard].each do |fn|
165:         yield(fn)
166:       end
167:     end
168:   end
indir(dir) {|| ...}

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

     # File lib/rake/contrib/sys.rb, line 126
126:   def indir(dir)
127:     olddir = Dir.pwd
128:     Dir.chdir(dir)
129:     yield
130:   ensure
131:     Dir.chdir(olddir)
132:   end
install(wildcard, dest_dir, mode)

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

    # File lib/rake/contrib/sys.rb, line 29
29:   def install(wildcard, dest_dir, mode)
30:     Dir[wildcard].each do |fn|
31:       File.install(fn, dest_dir, mode, $verbose)
32:     end
33:   end
link(file_name, dest_file)

Link file_name to dest_file.

    # File lib/rake/contrib/sys.rb, line 58
58:   def link(file_name, dest_file)
59:     log "Linking file #{file_name} to #{dest_file}"
60:     File.link(file_name, dest_file)
61:   end
link_files(wildcard, dest_dir)

Link all files matching wildcard into the directory dest_dir.

    # File lib/rake/contrib/sys.rb, line 64
64:   def link_files(wildcard, dest_dir)
65:     for_matching_files(wildcard, dest_dir) { |from, to| link(from, to) }
66:   end
log(msg)

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

     # File lib/rake/contrib/sys.rb, line 146
146:   def log(msg)
147:     print "  " if $trace && $verbose
148:     puts msg if $verbose
149:   end
makedirs(*dirs)

Make the directories given in dirs.

     # File lib/rake/contrib/sys.rb, line 117
117:   def makedirs(*dirs)
118:     dirs.each do |fn|
119:       log "Making directory #{fn}"
120:       File.makedirs(fn)
121:     end
122:   end
quiet(&block)

Perform a block with $verbose disabled.

     # File lib/rake/contrib/sys.rb, line 152
152:   def quiet(&block)
153:     with_verbose(false, &block)
154:   end
ruby(*args)

Run a Ruby interpreter with the given arguments.

    # File lib/rake/contrib/sys.rb, line 42
42:   def ruby(*args)
43:     run "#{RUBY} #{args.join(' ')}"
44:   end
run(cmd)

Run the system command cmd.

    # File lib/rake/contrib/sys.rb, line 36
36:   def run(cmd)
37:     log cmd
38:     system(cmd) or fail "Command Failed: [#{cmd}]"
39:   end
split_all(path)

Split a file path into individual directory names.

For example:

  split_all("a/b/c") =>  ['a', 'b', 'c']
     # File lib/rake/contrib/sys.rb, line 138
138:   def split_all(path)
139:     head, tail = File.split(path)
140:     return [tail] if head == '.' || tail == '/'
141:     return [head, tail] if head == '/'
142:     return split_all(head) + [tail]
143:   end
symlink(file_name, dest_file)

Symlink file_name to dest_file.

    # File lib/rake/contrib/sys.rb, line 69
69:   def symlink(file_name, dest_file)
70:     log "Symlinking file #{file_name} to #{dest_file}"
71:     File.symlink(file_name, dest_file)
72:   end
symlink_files(wildcard, dest_dir)

Symlink all files matching wildcard into the directory dest_dir.

    # File lib/rake/contrib/sys.rb, line 75
75:   def symlink_files(wildcard, dest_dir)
76:     for_matching_files(wildcard, dest_dir) { |from, to| link(from, to) }
77:   end
verbose(&block)

Perform a block with $verbose enabled.

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