Top Level Namespace
Defined Under Namespace
Instance Method Summary collapse
-
#chmod ⇒ Object
Change the mode of each FILE to OCTAL-MODE.
-
#cp ⇒ Object
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
-
#help ⇒ Object
Display help message.
-
#httpd ⇒ Object
Run WEBrick HTTP server.
-
#install ⇒ Object
Copy SOURCE to DEST.
-
#ln ⇒ Object
Create a link to the specified TARGET with LINK_NAME.
-
#mkdir ⇒ Object
Create the DIR, if they do not already exist.
-
#mkmf ⇒ Object
Create makefile using mkmf.
-
#mv ⇒ Object
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
-
#rm ⇒ Object
Remove the FILE.
-
#rmdir ⇒ Object
Remove the DIR.
-
#setup(options = "", *long_options) {|argv, opt_hash| ... } ⇒ Object
:nodoc:.
-
#touch ⇒ Object
Update the access and modification times of each FILE to the current time.
-
#wait_writable ⇒ Object
Wait until the file becomes writable.
Instance Method Details
#chmod ⇒ Object
Change the mode of each FILE to OCTAL-MODE.
ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE
-v verbose
212 213 214 215 216 217 |
# File 'lib/un.rb', line 212 def chmod setup do |argv, | mode = argv.shift.oct FileUtils.chmod mode, argv, end end |
#cp ⇒ Object
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
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/un.rb', line 83 def cp setup("pr") do |argv, | cmd = "cp" cmd += "_r" if .delete :r [:preserve] = true if .delete :p dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.send cmd, argv, dest, end end |
#help ⇒ Object
Display help message.
ruby -run -e help [COMMAND]
344 345 346 347 348 |
# File 'lib/un.rb', line 344 def help setup do |argv,| UN.help(argv) end end |
#httpd ⇒ Object
Run WEBrick HTTP server.
ruby -run -e httpd -- [OPTION] DocumentRoot
--bind-address=ADDR address to bind
--port=NUM listening port number
--max-clients=MAX max number of simultaneous clients
--temp-dir=DIR temporary directory
--do-not-reverse-lookup disable reverse lookup
--request-timeout=SECOND request timeout in seconds
--http-version=VERSION HTTP version
-v verbose
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 |
# File 'lib/un.rb', line 313 def httpd setup("", "BindAddress=ADDR", "Port=PORT", "MaxClients=NUM", "TempDir=DIR", "DoNotReverseLookup", "RequestTimeout=SECOND", "HTTPVersion=VERSION") do |argv, | require 'webrick' opt = [:RequestTimeout] and [:RequestTimeout] = opt.to_i [:Port, :MaxClients].each do |name| opt = [name] and ([name] = Integer(opt)) rescue nil end unless argv.size == 1 raise ArgumentError, "DocumentRoot is mandatory" end [:DocumentRoot] = argv.shift s = WEBrick::HTTPServer.new() shut = proc {s.shutdown} siglist = %w"TERM QUIT" siglist.concat(%w"HUP INT") if STDIN.tty? siglist &= Signal.list.keys siglist.each do |sig| Signal.trap(sig, shut) end s.start end end |
#install ⇒ Object
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
194 195 196 197 198 199 200 201 202 |
# File 'lib/un.rb', line 194 def install setup("pm:") do |argv, | [:mode] = (mode = .delete :m) ? mode.oct : 0755 [:preserve] = true if .delete :p dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.install argv, dest, end end |
#ln ⇒ Object
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
104 105 106 107 108 109 110 111 112 113 |
# File 'lib/un.rb', line 104 def ln setup("sf") do |argv, | cmd = "ln" cmd += "_s" if .delete :s [:force] = true if .delete :f dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.send cmd, argv, dest, end end |
#mkdir ⇒ Object
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
159 160 161 162 163 164 165 |
# File 'lib/un.rb', line 159 def mkdir setup("p") do |argv, | cmd = "mkdir" cmd += "_p" if .delete :p FileUtils.send cmd, argv, end end |
#mkmf ⇒ Object
Create makefile using mkmf.
ruby -run -e mkmf -- [OPTION] EXTNAME [OPTION]
-d ARGS run dir_config
-h ARGS run have_header
-l ARGS run have_library
-f ARGS run have_func
-v ARGS run have_var
-t ARGS run have_type
-m ARGS run have_macro
-c ARGS run have_const
--vendor install to vendor_ruby
282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 |
# File 'lib/un.rb', line 282 def mkmf setup("d:h:l:f:v:t:m:c:", "vendor") do |argv, | require 'mkmf' opt = [:d] and opt.split(/:/).each {|n| dir_config(*n.split(/,/))} opt = [:h] and opt.split(/:/).each {|n| have_header(*n.split(/,/))} opt = [:l] and opt.split(/:/).each {|n| have_library(*n.split(/,/))} opt = [:f] and opt.split(/:/).each {|n| have_func(*n.split(/,/))} opt = [:v] and opt.split(/:/).each {|n| have_var(*n.split(/,/))} opt = [:t] and opt.split(/:/).each {|n| have_type(*n.split(/,/))} opt = [:m] and opt.split(/:/).each {|n| have_macro(*n.split(/,/))} opt = [:c] and opt.split(/:/).each {|n| have_const(*n.split(/,/))} $configure_args["--vendor"] = true if [:vendor] create_makefile(*argv) end end |
#mv ⇒ Object
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
ruby -run -e mv -- [OPTION] SOURCE DEST
-v verbose
123 124 125 126 127 128 129 |
# File 'lib/un.rb', line 123 def mv setup do |argv, | dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.mv argv, dest, end end |
#rm ⇒ Object
Remove the FILE
ruby -run -e rm -- [OPTION] FILE
-f ignore nonexistent files
-r remove the contents of directories recursively
-v verbose
141 142 143 144 145 146 147 148 |
# File 'lib/un.rb', line 141 def rm setup("fr") do |argv, | cmd = "rm" cmd += "_r" if .delete :r [:force] = true if .delete :f FileUtils.send cmd, argv, end end |
#rmdir ⇒ Object
Remove the DIR.
ruby -run -e rmdir -- [OPTION] DIR
-p remove DIRECTORY and its ancestors.
-v verbose
176 177 178 179 180 181 |
# File 'lib/un.rb', line 176 def rmdir setup("p") do |argv, | [:parents] = true if .delete :p FileUtils.rmdir argv, end end |
#setup(options = "", *long_options) {|argv, opt_hash| ... } ⇒ Object
:nodoc:
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/un.rb', line 36 def setup( = "", *) caller = caller_locations(1, 1)[0].label opt_hash = {} argv = [] OptionParser.new do |o| .scan(/.:?/) do |s| opt_name = s.delete(":").intern o.on("-" + s.tr(":", " ")) do |val| opt_hash[opt_name] = val end end .each do |s| opt_name, arg_name = s.split(/(?=[\s=])/, 2) opt_name.sub!(/\A--/, '') s = "--#{opt_name.gsub(/([A-Z]+|[a-z])([A-Z])/, '\1-\2').downcase}#{arg_name}" puts "#{opt_name}=>#{s}" if $DEBUG opt_name = opt_name.intern o.on(s) do |val| opt_hash[opt_name] = val end end o.on("-v") do opt_hash[:verbose] = true end o.on("--help") do UN.help([caller]) exit end o.order!(ARGV) do |x| if /[*?\[{]/ =~ x argv.concat(Dir[x]) else argv << x end end end yield argv, opt_hash end |
#touch ⇒ Object
Update the access and modification times of each FILE to the current time.
ruby -run -e touch -- [OPTION] FILE
-v verbose
227 228 229 230 231 |
# File 'lib/un.rb', line 227 def touch setup do |argv, | FileUtils.touch argv, end end |
#wait_writable ⇒ Object
Wait until the file becomes writable.
ruby -run -e wait_writable -- [OPTION] FILE
-n RETRY count to retry
-w SEC each wait time in seconds
-v verbose
243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 |
# File 'lib/un.rb', line 243 def wait_writable setup("n:w:v") do |argv, | verbose = [:verbose] n = [:n] and n = Integer(n) wait = (wait = [:w]) ? Float(wait) : 0.2 argv.each do |file| begin open(file, "r+b") rescue Errno::ENOENT break rescue Errno::EACCES => e raise if n and (n -= 1) <= 0 if verbose puts e STDOUT.flush end sleep wait retry end end end end |