Module: Sys
Overview
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.
Constant Summary collapse
- RUBY =
Config::CONFIG['ruby_install_name']
Instance Method Summary collapse
-
#copy(file_name, dest_file) ⇒ Object
Copy a single file from
file_name
todest_file
. -
#copy_files(wildcard, dest_dir) ⇒ Object
Copy all files matching
wildcard
into the directorydest_dir
. -
#delete(*wildcards) ⇒ Object
Remove all files matching
wildcard
. -
#delete_all(*wildcards) ⇒ Object
Recursively delete all files and directories matching
wildcard
. -
#for_files(*wildcards) ⇒ Object
Perform a block with each file matching a set of wildcards.
-
#indir(dir) ⇒ Object
Make
dir
the current working directory for the duration of executing the given block. -
#install(wildcard, dest_dir, mode) ⇒ Object
Install all the files matching
wildcard
into thedest_dir
directory. -
#link(file_name, dest_file) ⇒ Object
Link
file_name
todest_file
. -
#link_files(wildcard, dest_dir) ⇒ Object
Link all files matching
wildcard
into the directorydest_dir
. -
#log(msg) ⇒ Object
Write a message to standard out if $verbose is enabled.
-
#makedirs(*dirs) ⇒ Object
Make the directories given in
dirs
. -
#quiet(&block) ⇒ Object
Perform a block with $verbose disabled.
-
#ruby(*args) ⇒ Object
Run a Ruby interpreter with the given arguments.
-
#run(cmd) ⇒ Object
Run the system command
cmd
. -
#split_all(path) ⇒ Object
Split a file path into individual directory names.
-
#symlink(file_name, dest_file) ⇒ Object
Symlink
file_name
todest_file
. -
#symlink_files(wildcard, dest_dir) ⇒ Object
Symlink all files matching
wildcard
into the directorydest_dir
. -
#verbose(&block) ⇒ Object
Perform a block with $verbose enabled.
Instance Method Details
#copy(file_name, dest_file) ⇒ Object
Copy a single file from file_name
to dest_file
.
65 66 67 68 |
# File 'lib/rake/contrib/sys.rb', line 65 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) ⇒ Object
Copy all files matching wildcard
into the directory dest_dir
.
71 72 73 |
# File 'lib/rake/contrib/sys.rb', line 71 def copy_files(wildcard, dest_dir) for_matching_files(wildcard, dest_dir) { |from, to| copy(from, to) } end |
#delete(*wildcards) ⇒ Object
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.
100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/rake/contrib/sys.rb', line 100 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) ⇒ Object
Recursively delete all files and directories matching wildcard
.
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/rake/contrib/sys.rb', line 115 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) ⇒ Object
Perform a block with each file matching a set of wildcards.
180 181 182 183 184 185 186 |
# File 'lib/rake/contrib/sys.rb', line 180 def for_files(*wildcards) wildcards.each do |wildcard| Dir[wildcard].each do |fn| yield(fn) end end end |
#indir(dir) ⇒ Object
Make dir
the current working directory for the duration of executing the given block.
144 145 146 147 148 149 150 |
# File 'lib/rake/contrib/sys.rb', line 144 def indir(dir) olddir = Dir.pwd Dir.chdir(dir) yield ensure Dir.chdir(olddir) end |
#install(wildcard, dest_dir, mode) ⇒ Object
Install all the files matching wildcard
into the dest_dir
directory. The permission mode is set to mode
.
47 48 49 50 51 |
# File 'lib/rake/contrib/sys.rb', line 47 def install(wildcard, dest_dir, mode) Dir[wildcard].each do |fn| File.install(fn, dest_dir, mode, $verbose) end end |
#link(file_name, dest_file) ⇒ Object
Link file_name
to dest_file
.
76 77 78 79 |
# File 'lib/rake/contrib/sys.rb', line 76 def link(file_name, dest_file) log "Linking file #{file_name} to #{dest_file}" File.link(file_name, dest_file) end |
#link_files(wildcard, dest_dir) ⇒ Object
Link all files matching wildcard
into the directory dest_dir
.
82 83 84 |
# File 'lib/rake/contrib/sys.rb', line 82 def link_files(wildcard, dest_dir) for_matching_files(wildcard, dest_dir) { |from, to| link(from, to) } end |
#log(msg) ⇒ Object
Write a message to standard out if $verbose is enabled.
164 165 166 167 |
# File 'lib/rake/contrib/sys.rb', line 164 def log(msg) print " " if $trace && $verbose puts msg if $verbose end |
#makedirs(*dirs) ⇒ Object
Make the directories given in dirs
.
135 136 137 138 139 140 |
# File 'lib/rake/contrib/sys.rb', line 135 def makedirs(*dirs) dirs.each do |fn| log "Making directory #{fn}" File.makedirs(fn) end end |
#quiet(&block) ⇒ Object
Perform a block with $verbose disabled.
170 171 172 |
# File 'lib/rake/contrib/sys.rb', line 170 def quiet(&block) with_verbose(false, &block) end |
#ruby(*args) ⇒ Object
Run a Ruby interpreter with the given arguments.
60 61 62 |
# File 'lib/rake/contrib/sys.rb', line 60 def ruby(*args) run "#{RUBY} #{args.join(' ')}" end |
#run(cmd) ⇒ Object
Run the system command cmd
.
54 55 56 57 |
# File 'lib/rake/contrib/sys.rb', line 54 def run(cmd) log cmd system(cmd) or fail "Command Failed: [#{cmd}]" end |
#split_all(path) ⇒ Object
Split a file path into individual directory names.
For example:
split_all("a/b/c") => ['a', 'b', 'c']
156 157 158 159 160 161 |
# File 'lib/rake/contrib/sys.rb', line 156 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 |
#symlink(file_name, dest_file) ⇒ Object
Symlink file_name
to dest_file
.
87 88 89 90 |
# File 'lib/rake/contrib/sys.rb', line 87 def symlink(file_name, dest_file) log "Symlinking file #{file_name} to #{dest_file}" File.symlink(file_name, dest_file) end |
#symlink_files(wildcard, dest_dir) ⇒ Object
Symlink all files matching wildcard
into the directory dest_dir
.
93 94 95 |
# File 'lib/rake/contrib/sys.rb', line 93 def symlink_files(wildcard, dest_dir) for_matching_files(wildcard, dest_dir) { |from, to| link(from, to) } end |
#verbose(&block) ⇒ Object
Perform a block with $verbose enabled.
175 176 177 |
# File 'lib/rake/contrib/sys.rb', line 175 def verbose(&block) with_verbose(true, &block) end |