Stupid optparse question

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 = {}
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.parse!


Any hints appreciated.

Thanks!
-Chris

On 11/15/2010 10:27 PM, Chris P. 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|

end

end

o.parse!

if ARGV.empty?
puts o
else

do whatever

end

Kind regards

robert

On Nov 15, 2010, at 13:27 , Chris P. 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:

well… they are called “options”, not “mandatories” :stuck_out_tongue:

I usually do this near the top:

ARGV << “-h” if ARGV.empty?

On Mon, Nov 15, 2010 at 11:17 PM, Chris P. [email protected] wrote:

options = {}
opts.on(“-n”, “–next-branch [nextbranch]”, "The branch you want
puts opts

do whatever

(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

On Mon, Nov 15, 2010 at 4:45 PM, Robert K.
[email protected] wrote:

o = OptionParser.new do |opts|

options[:nextbranch] = n

end

Kind regards

   robert

This works perfectly, thanks much!

(I never thought to mix querying ARGV with the OptionsParser class)

-Chris