Top Level Namespace
Instance Method Summary
- 
    
      #chmod  
    
    Change the mode of each FILE to OCTAL-MODE. 
- 
    
      #colorize  
    
    Colorize ruby code. 
- 
    
      #cp  
    
    Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY. 
- 
    
      #help  
    
    Display help message. 
- 
    
      #httpd  
    
    Run WEBrick HTTP server. 
- 
    
      #install  
    
    Copy SOURCE to DEST. 
- 
    
      #ln  
    
    Create a link to the specified TARGET with LINK_NAME. 
- 
    
      #mkdir  
    
    Create the DIR, if they do not already exist. 
- 
    
      #mkmf  
    
    Create makefile using mkmf. 
- 
    
      #mv  
    
    Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY. 
- 
    
      #rm  
    
    Remove the FILE. 
- 
    
      #rmdir  
    
    Remove the DIR. 
- 
    
      #touch  
    
    Update the access and modification times of each FILE to the current time. 
- 
    
      #wait_writable  
    
    Wait until the file becomes writable. 
- #setup(options = "", *long_options) {|argv, opt_hash| ... } Internal use only
Instance Method Details
#chmod
Change the mode of each FILE to OCTAL-MODE.
ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE
-v          verbose#colorize
Colorize ruby code.
ruby -run -e colorize -- [FILE]# File 'lib/un.rb', line 384
def colorize begin require "irb/color" rescue LoadError raise "colorize requires irb 1.1.0 or later" end setup do |argv, | if argv.empty? puts IRB::Color.colorize_code STDIN.read return end argv.each do |file| puts IRB::Color.colorize_code File.read(file) end end end
#cp
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
-l          make hard link instead of  (implies -r)
-v          verbose#help
Display help message.
ruby -run -e help [COMMAND]#httpd
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
--server-name=NAME          name of the server host
--server-software=NAME      name and version of the server
--ssl-certificate=CERT      The SSL certificate file for the server
--ssl-private-key=KEY       The SSL private key file for the server certificate
-v                          verbose# File 'lib/un.rb', line 325
def httpd setup("", "BindAddress=ADDR", "Port=PORT", "MaxClients=NUM", "TempDir=DIR", "DoNotReverseLookup", "RequestTimeout=SECOND", "HTTPVersion=VERSION", "ServerName=NAME", "ServerSoftware=NAME", "SSLCertificate=CERT", "SSLPrivateKey=KEY") do |argv, | begin require 'webrick' rescue LoadError abort "webrick is not found. You may need to `gem install webrick` to install webrick." end opt = [:RequestTimeout] and [:RequestTimeout] = opt.to_i [:Port, :MaxClients].each do |name| opt = [name] and ([name] = Integer(opt)) rescue nil end if cert = [:SSLCertificate] key = [:SSLPrivateKey] or raise "--ssl-private-key option must also be given" require 'webrick/https' [:SSLEnable] = true [:SSLCertificate] = OpenSSL::X509::Certificate.new(File.read(cert)) [:SSLPrivateKey] = OpenSSL::PKey.read(File.read(key)) [:Port] ||= 8443 # HTTPS Alternate end [:Port] ||= 8080 # HTTP Alternate [:DocumentRoot] = argv.shift || '.' s = nil [:StartCallback] = proc { logger = s.logger logger.info("To access this server, open this URL in a browser:") s.listeners.each do |listener| if [:SSLEnable] addr = listener.addr addr[3] = "127.0.0.1" if addr[3] == "0.0.0.0" addr[3] = "::1" if addr[3] == "::" logger.info(" https://#{Addrinfo.new(addr).inspect_sockaddr}") else logger.info(" http://#{listener.connect_address.inspect_sockaddr}") end end } 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
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  mode (as in chmod), instead of 0755
-o          set owner user id, instead of the current owner
-g          set owner group id, instead of the current group
-v          verbose# File 'lib/un.rb', line 199
def install setup("pm:o:g:") do |argv, | (mode = .delete :m) and [:mode] = /\A\d/ =~ mode ? mode.oct : mode [:preserve] = true if .delete :p (owner = .delete :o) and [:owner] = owner (group = .delete :g) and [:group] = group dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.install argv, dest, ** end end
#ln
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#mkdir
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#mkmf
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# File 'lib/un.rb', line 290
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
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
ruby -run -e mv -- [OPTION] SOURCE DEST
-v          verbose#rm
Remove the FILE
ruby -run -e rm -- [OPTION] FILE
-f          ignore nonexistent files
-r          remove the contents of directories recursively
-v          verbose#rmdir
Remove the DIR.
ruby -run -e rmdir -- [OPTION] DIR
-p          remove DIRECTORY and its ancestors.
-v          verbose#setup(options = "", *long_options) {|argv, opt_hash| ... }
# File 'lib/un.rb', line 37
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.delete_prefix!('--') 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
Update the access and modification times of each FILE to the current time.
ruby -run -e touch -- [OPTION] FILE
-v          verbose#wait_writable
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# File 'lib/un.rb', line 251
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 File.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