Really Cheap Command-Line Option Parsing in Ruby

前端 未结 20 1098
野的像风
野的像风 2020-11-30 16:57

EDIT: Please, please, please read the two requirements listed at the bottom of this post before replying. People keep posting their new gems and li

20条回答
  •  Happy的楠姐
    2020-11-30 17:11

    This is very similar to the accepted answer, but using ARGV.delete_if which is what I use in my simple parser. The only real difference is that options with arguments must be together (e.g. -l=file).

    def usage
      "usage: #{File.basename($0)}: [-l=] [-q] file ..."
    end
    
    $quiet = false
    $logfile = nil
    
    ARGV.delete_if do |cur|
      next false if cur[0] != '-'
      case cur
      when '-q'
        $quiet = true
      when /^-l=(.+)$/
        $logfile = $1
      else
        $stderr.puts "Unknown option: #{cur}"
        $stderr.puts usage
        exit 1
      end
    end
    
    puts "quiet: #{$quiet} logfile: #{$logfile.inspect} args: #{ARGV.inspect}"
    

提交回复
热议问题