Top Level Namespace

Defined Under Namespace

Modules: FileUtils

Instance Method Summary collapse

Instance Method Details

#chmodObject

Change the mode of each FILE to OCTAL-MODE.

ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE

-v		verbose


195
196
197
198
199
200
# File 'lib/un.rb', line 195

def chmod
  setup do |argv, options|
    mode = argv.shift.oct
    FileUtils.chmod mode, argv, options
  end
end

#cpObject

Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY

ruby -run -e cp -- [OPTION] SOURCE DEST

-p		preserve file attributes if possible
-r		copy recursively
-v		verbose


68
69
70
71
72
73
74
75
76
77
# File 'lib/un.rb', line 68

def cp
  setup("pr") do |argv, options|
    cmd = "cp"
    cmd += "_r" if options.delete :r
    options[:preserve] = true if options.delete :p
    dest = argv.pop
    argv = argv[0] if argv.size == 1
    FileUtils.send cmd, argv, dest, options
  end
end

#helpObject

Display help message.

ruby -run -e help [COMMAND]


222
223
224
225
226
227
228
229
230
231
232
233
234
235
# File 'lib/un.rb', line 222

def help
  setup do |argv,|
    all = argv.empty?
    open(__FILE__) do |me|
      while me.gets("##\n")
	if help = me.gets("\n\n")
	  if all or argv.delete help[/-e \w+/].sub(/-e /, "")
	    print help.gsub(/^# ?/, "")
	  end
	end
      end
    end
  end
end

#installObject

Copy SOURCE to DEST.

 ruby -run -e install -- [OPTION] SOURCE DEST

 -p		apply access/modification times of SOURCE files to
		corresponding destination files
 -m		set permission mode (as in chmod), instead of 0755
 -v		verbose


177
178
179
180
181
182
183
184
185
# File 'lib/un.rb', line 177

def install
  setup("pm:") do |argv, options|
    options[:mode] = (mode = options.delete :m) ? mode.oct : 0755
    options[:preserve] = true if options.delete :p
    dest = argv.pop
    argv = argv[0] if argv.size == 1
    FileUtils.install argv, dest, options
  end
end

#lnObject

Create a link to the specified TARGET with LINK_NAME.

ruby -run -e ln -- [OPTION] TARGET LINK_NAME

-s		make symbolic links instead of hard links
-f		remove existing destination files
-v		verbose


89
90
91
92
93
94
95
96
97
98
# File 'lib/un.rb', line 89

def ln
  setup("sf") do |argv, options|
    cmd = "ln"
    cmd += "_s" if options.delete :s
    options[:force] = true if options.delete :f
    dest = argv.pop
    argv = argv[0] if argv.size == 1
    FileUtils.send cmd, argv, dest, options
  end
end

#mkdirObject

Create the DIR, if they do not already exist.

ruby -run -e mkdir -- [OPTION] DIR

-p		no error if existing, make parent directories as needed
-v		verbose


144
145
146
147
148
149
150
# File 'lib/un.rb', line 144

def mkdir
  setup("p") do |argv, options|
    cmd = "mkdir"
    cmd += "_p" if options.delete :p
    FileUtils.send cmd, argv, options
  end
end

#mvObject

Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

ruby -run -e mv -- [OPTION] SOURCE DEST

-v		verbose


108
109
110
111
112
113
114
# File 'lib/un.rb', line 108

def mv
  setup do |argv, options|
    dest = argv.pop
    argv = argv[0] if argv.size == 1
    FileUtils.mv argv, dest, options
  end
end

#rmObject

Remove the FILE

ruby -run -e rm -- [OPTION] FILE

-f		ignore nonexistent files
-r		remove the contents of directories recursively
-v		verbose


126
127
128
129
130
131
132
133
# File 'lib/un.rb', line 126

def rm
  setup("fr") do |argv, options|
    cmd = "rm"
    cmd += "_r" if options.delete :r
    options[:force] = true if options.delete :f
    FileUtils.send cmd, argv, options
  end
end

#rmdirObject

Remove the DIR.

ruby -run -e rmdir -- [OPTION] DIR

-v		verbose


160
161
162
163
164
# File 'lib/un.rb', line 160

def rmdir
  setup do |argv, options|
    FileUtils.rmdir argv, options
  end
end

#setup(options = "") {|ARGV, opt_hash| ... } ⇒ Object

Yields:

  • (ARGV, opt_hash)


32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/un.rb', line 32

def setup(options = "")
  ARGV.map! do |x|
    case x
    when /^-/
      x.delete "^-#{options}v"
    when /[*?\[{]/
      Dir[x]
    else
      x
    end
  end
  ARGV.flatten!
  ARGV.delete_if{|x| x == "-"}
  opt_hash = {}
  OptionParser.new do |o|
    options.scan(/.:?/) do |s|
      o.on("-" + s.tr(":", " ")) do |val|
        opt_hash[s.delete(":").intern] = val
      end
    end
    o.on("-v") do opt_hash[:verbose] = true end
    o.parse!
  end
  yield ARGV, opt_hash
end

#touchObject

Update the access and modification times of each FILE to the current time.

ruby -run -e touch -- [OPTION] FILE

-v		verbose


210
211
212
213
214
# File 'lib/un.rb', line 210

def touch
  setup do |argv, options|
    FileUtils.touch argv, options
  end
end