On Mon, Nov 15, 2010 at 11:17 PM, Chris Patti <cpatti / gmail.com> wrote:
> On Mon, Nov 15, 2010 at 4:45 PM, Robert Klemme
> <shortcutter / googlemail.com> 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?
>>>  ¨Â èáªôèïõçèôïðôó®ïîßôáéì ÷ïõìäï ôèéóâõéô äïåóî§óååí ôï âå
>>> working.  ¨Âèå õóáçðòéîôó ðòïðåòìù éæ õó­è ôèïõçè>>> ---
>>> 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
>>>  ¨Âõôïðôó
>>>  ¨Âøé>>> end
>>>
>>> end
>>
>> o.parse!
>>
>> if ARGV.empty?
>>  ¨Âõô>> else
>>  do whatever
>> end
>>
>> Kind regards
>>
>>  ¨Âïâåò>>
>>
>
> 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/