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 =
RbConfig::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 error 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
.
48 49 50 51 |
# File 'lib/rake/contrib/sys.rb', line 48 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
.
54 55 56 |
# File 'lib/rake/contrib/sys.rb', line 54 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.
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/rake/contrib/sys.rb', line 83 def delete(*wildcards) wildcards.each do |wildcard| FileList.glob(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
.
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/rake/contrib/sys.rb', line 98 def delete_all(*wildcards) wildcards.each do |wildcard| FileList.glob(wildcard).each do |fn| next if ! File.exist?(fn) if File.directory?(fn) FileList.glob("#{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.
163 164 165 166 167 168 169 |
# File 'lib/rake/contrib/sys.rb', line 163 def for_files(*wildcards) wildcards.each do |wildcard| FileList.glob(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.
127 128 129 130 131 132 133 |
# File 'lib/rake/contrib/sys.rb', line 127 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
.
30 31 32 33 34 |
# File 'lib/rake/contrib/sys.rb', line 30 def install(wildcard, dest_dir, mode) FileList.glob(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
.
59 60 61 62 |
# File 'lib/rake/contrib/sys.rb', line 59 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
.
65 66 67 |
# File 'lib/rake/contrib/sys.rb', line 65 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 error if $verbose is enabled.
147 148 149 150 |
# File 'lib/rake/contrib/sys.rb', line 147 def log(msg) print " " if $trace && $verbose $stderr.puts msg if $verbose end |
#makedirs(*dirs) ⇒ Object
Make the directories given in dirs
.
118 119 120 121 122 123 |
# File 'lib/rake/contrib/sys.rb', line 118 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.
153 154 155 |
# File 'lib/rake/contrib/sys.rb', line 153 def quiet(&block) with_verbose(false, &block) end |
#ruby(*args) ⇒ Object
Run a Ruby interpreter with the given arguments.
43 44 45 |
# File 'lib/rake/contrib/sys.rb', line 43 def ruby(*args) run "#{RUBY} #{args.join(' ')}" end |
#run(cmd) ⇒ Object
Run the system command cmd
.
37 38 39 40 |
# File 'lib/rake/contrib/sys.rb', line 37 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']
139 140 141 142 143 144 |
# File 'lib/rake/contrib/sys.rb', line 139 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
.
70 71 72 73 |
# File 'lib/rake/contrib/sys.rb', line 70 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
.
76 77 78 |
# File 'lib/rake/contrib/sys.rb', line 76 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.
158 159 160 |
# File 'lib/rake/contrib/sys.rb', line 158 def verbose(&block) with_verbose(true, &block) end |