diff options
Diffstat (limited to 'lib/un.rb')
-rw-r--r-- | lib/un.rb | 51 |
1 files changed, 47 insertions, 4 deletions
@@ -23,13 +23,13 @@ # ruby -run -e wait_writable -- [OPTION] FILE # ruby -run -e mkmf -- [OPTION] EXTNAME [OPTION] # ruby -run -e httpd -- [OPTION] [DocumentRoot] +# ruby -run -e colorize -- [FILE] # ruby -run -e help [COMMAND] require "fileutils" require "optparse" module FileUtils -# @fileutils_label = "" @fileutils_output = $stdout end @@ -78,13 +78,15 @@ end # # -p preserve file attributes if possible # -r copy recursively +# -l make hard link instead of copying (implies -r) # -v verbose # def cp - setup("pr") do |argv, options| + setup("prl") do |argv, options| cmd = "cp" cmd += "_r" if options.delete :r + cmd = "cp_lr" if options.delete :l options[:preserve] = true if options.delete :p dest = argv.pop argv = argv[0] if argv.size == 1 @@ -253,7 +255,7 @@ def wait_writable wait = (wait = options[:w]) ? Float(wait) : 0.2 argv.each do |file| begin - open(file, "r+b") + File.open(file, "r+b") {} rescue Errno::ENOENT break rescue Errno::EACCES => e @@ -346,6 +348,21 @@ def httpd end options[:Port] ||= 8080 # HTTP Alternate options[:DocumentRoot] = argv.shift || '.' + s = nil + options[:StartCallback] = proc { + logger = s.logger + logger.info("To access this server, open this URL in a browser:") + s.listeners.each do |listener| + if options[: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(options) shut = proc {s.shutdown} siglist = %w"TERM QUIT" @@ -359,6 +376,29 @@ def httpd end ## +# Colorize ruby code. +# +# ruby -run -e colorize -- [FILE] +# + +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 + +## # Display help message. # # ruby -run -e help [COMMAND] @@ -371,6 +411,9 @@ def help end module UN # :nodoc: + + VERSION = "0.3.0" + module_function def help(argv, output: $stdout) all = argv.empty? @@ -381,7 +424,7 @@ module UN # :nodoc: messages = {} store = proc {|msg| messages[cmd] = msg} end - open(__FILE__) do |me| + File.open(__FILE__) do |me| while me.gets("##\n") if help = me.gets("\n\n") if all or argv.include?(cmd = help[/^#\s*ruby\s.*-e\s+(\w+)/, 1]) |