Module: FileUtils
- Included in:
- Rake::FileUtilsExt
- Defined in:
- lib/rake/file_utils.rb
Overview
-- This a FileUtils extension that defines several additional commands to be added to the FileUtils utility functions.
Constant Summary collapse
- RUBY =
Path to the currently running Ruby program
File.join( RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT']). sub(/.*\s.*/m, '"\&"')
- LN_SUPPORTED =
[true]
Instance Method Summary collapse
-
#ruby(*args, &block) ⇒ Object
Run a Ruby interpreter with the given arguments.
-
#safe_ln(*args) ⇒ Object
Attempt to do a normal file link, but fall back to a copy if the link fails.
-
#sh(*cmd, &block) ⇒ Object
Run the system command
cmd
. -
#split_all(path) ⇒ Object
Split a file path into individual directory names.
Instance Method Details
#ruby(*args, &block) ⇒ Object
Run a Ruby interpreter with the given arguments.
Example:
ruby %{-pe '$_.upcase!' <README}
77 78 79 80 81 82 83 84 |
# File 'lib/rake/file_utils.rb', line 77 def ruby(*args,&block) = (Hash === args.last) ? args.pop : {} if args.length > 1 then sh(*([RUBY] + args + []), &block) else sh("#{RUBY} #{args.first}", , &block) end end |
#safe_ln(*args) ⇒ Object
Attempt to do a normal file link, but fall back to a copy if the link
fails.
90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/rake/file_utils.rb', line 90 def safe_ln(*args) unless LN_SUPPORTED[0] cp(*args) else begin ln(*args) rescue StandardError, NotImplementedError LN_SUPPORTED[0] = false cp(*args) end end end |
#sh(*cmd, &block) ⇒ Object
Run the system command cmd
. If multiple arguments are given the command is not run with the shell (same semantics as Kernel::exec and Kernel::system).
Example:
sh %{ls -ltr}
sh 'ls', 'file with spaces'
# check exit status after command runs
sh %{grep pattern file} do |ok, res|
if ! ok
puts "pattern not found (status = #{res.exitstatus})"
end
end
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/rake/file_utils.rb', line 33 def sh(*cmd, &block) = (Hash === cmd.last) ? cmd.pop : {} shell_runner = block_given? ? block : create_shell_runner(cmd) set_verbose_option() [:noop] ||= Rake::FileUtilsExt.nowrite_flag Rake. , :noop, :verbose Rake. cmd.join(" ") if [:verbose] unless [:noop] res = rake_system(*cmd) status = $? status = PseudoStatus.new(1) if !res && status.nil? shell_runner.call(res, status) end end |
#split_all(path) ⇒ Object
Split a file path into individual directory names.
Example:
split_all("a/b/c") => ['a', 'b', 'c']
108 109 110 111 112 113 |
# File 'lib/rake/file_utils.rb', line 108 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 |