From: Robert Klemme Date: 2010-11-16T17:04:54+09:00 Subject: Re: Stupid optparse question On Mon, Nov 15, 2010 at 11:17 PM, Chris Patti wrote: > On Mon, Nov 15, 2010 at 4:45 PM, Robert Klemme > wrote: >> On 11/15/2010 10:27 PM, Chris Patti wrote: >>> >>> How can I make my code print the usage even if zero options are given? >>>  I had *thought* opts.on_tail would do this, but it doesn't seem to be >>> working.  The usage prints properly if I use -h though: >>> --- >>> require 'optparse' >>> >>> options = {} >> >> o = OptionParser.new do |opts| >> >>>   opts.banner = "Usage: #$0 [options] [terms]" >>> >>>   opts.on("-a", "--automatic", "Use current Git repo to determine >>> current and next release branch and tag names") do |a| >>>     options[:automatic] = a >>>   end >>> >>>   opts.on("-n", "--next-branch [nextbranch]", "The branch you want >>> this script to create.") do |n| >>>     options[:nextbranch] = n >>>   end >>> >>>   opts.on("-t", "--tag [tag]", "The tag you want the new branch >>> created from.") do |t| >>>     options[:tag] = t >>>   end >>> >>>   opts.on_tail("-h", "--help", "Show this help message.") do >>>      puts opts >>>      exit >>>   end >>> >>> end >> >> o.parse! >> >> if ARGV.empty? >>  puts o >> else >>  # do whatever >> end >> >> Kind regards >> >>        robert >> >> > > This works perfectly, thanks much! > > (I never thought to mix querying ARGV with the OptionsParser class) When I think of it you probably also want to consider this variant: o = OptionParser.new do |opts| ... end if ARGV.empty? puts o else o.parse! ARGV # main end Depends on when you want to detect the "emptiness". Btw, on_tail only determines where the option is printed when printing usage IIRC. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/