From 3fbbec0c39f5a166e3bd5016c6dfaf30c26bb498 Mon Sep 17 00:00:00 2001 From: eban Date: Tue, 29 Jul 2003 10:24:28 +0000 Subject: * lib/fileutils.rb (install): support preserve timestamp. * instruby.rb (install): use FileUtils::install preserve mode. * lib/un.rb: new. % ruby -run -e cp -- -p foo bar * lib/mkmf.rb: use un.rb instead of ftools.rb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/un.rb | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 lib/un.rb (limited to 'lib/un.rb') diff --git a/lib/un.rb b/lib/un.rb new file mode 100644 index 0000000000..3834784f2d --- /dev/null +++ b/lib/un.rb @@ -0,0 +1,101 @@ +require 'fileutils' +require 'getopts' + +module FileUtils +# @fileutils_label = '' + @fileutils_output = $stdout +end + +def setup(options = "") + options += "v" + ARGV.map! do |x| + case x + when /^-/ + x.delete "^-#{options}" + when /[*?\[{]/ + Dir[x] + else + x + end + end + ARGV.flatten! + ARGV.delete_if{|x| x == '-'} + getopts(options) + options = {} + options[:verbose] = true if $OPT["v"] + options[:force] = true if $OPT["f"] + options[:preserve] = true if $OPT["p"] + yield ARGV, options, $OPT +end + +def mkdir + setup("p") do |argv, options, opt| + cmd = "mkdir" + cmd += "_p" if options.delete :preserve + FileUtils.send cmd, argv, options + end +end + +def rmdir + setup do |argv, options| + FileUtils.rmdir argv, options + end +end + +def ln + setup("sf") do |argv, options, opt| + cmd = "ln" + cmd += "_s" if opt["s"] + dest = argv.pop + argv = argv[0] if argv.size == 1 + FileUtils.send cmd, argv, dest, options + end +end + +def cp + setup("pr") do |argv, options, opt| + cmd = "cp" + cmd += "_r" if opt["r"] + dest = argv.pop + argv = argv[0] if argv.size == 1 + FileUtils.send cmd, argv, dest, options + end +end + +def mv + setup do |argv, options| + dest = argv.pop + argv = argv[0] if argv.size == 1 + FileUtils.mv argv, dest, options + end +end + +def rm + setup("fr") do |argv, options, opt| + cmd = "rm" + cmd += "_r" if opt["r"] + FileUtils.send cmd, argv, options + end +end + +def install + setup("pm:") do |argv, options, opt| + options[:mode] = opt["m"] ? opt["m"].oct : 0755 + dest = argv.pop + argv = argv[0] if argv.size == 1 + FileUtils.install argv, dest, options + end +end + +def chmod + setup do |argv, options| + mode = argv.shift.oct + FileUtils.chmod mode, argv, options + end +end + +def touch + setup do |argv, options| + FileUtils.touch argv, options + end +end -- cgit v1.2.3