I'm having a real problem understanding OptionParser -- the docs in
pickaxe are rather cryptic, Ruby Way doesn't even talk about it, and all
the Q&A I can find on the web doesn't clear it up for me.
I've gotten this far:
# test.rb ---------
require 'optparse'
commands = OptionParser.new
commands.on("-h", "--help") # more or less, I get the .on stuff
commands.on("-e=RUN_ENV")
commands.parse(ARGV)
puts commands
# ---------
That will dump a display of the commands, but for the life of me, I
can't figure out how to determine which options were actually submitted.
And if the -e param was supplied, what's its value is.
Here is a quick example program. Hope this gets you started.
#!/usr/bin/env ruby
require 'optparse'
options = {}
opts = OptionParser.new
opts.on("-W", "--weekday", "Print out the weekday") do |v|
options[:weekday] = true
end
opts.on("-H", "--hour TYPE", "Print out the hour in 24 or 12 hour
clock") do |v|
options[:hour] = v
end
opts.parse!
unless options[:weekday] || options[:hour]
puts opts
exit
end
if options[:weekday]
puts Time.now.strftime("%A")
exit
end
case options[:hour]
when "12"
puts Time.now.strftime("%I")
when "24"
puts Time.now.strftime("%H")
else
puts "You must send 12 or 24 as an argument to --hour"
end
Main {
option('environment', 'e'){
synopsis 'specify run time environment'
default 'development'
argument :required
validate{|arg| %w[ production development test ].include? arg}
}
def run
environment = params['environment']
y :given => environment.given?,
:value => environment.value
end
}
cfp:~ > ruby a.rb
···
On Jul 2, 2008, at 6:54 PM, Greg Willits wrote:
I'm having a real problem understanding OptionParser -- the docs in
pickaxe are rather cryptic, Ruby Way doesn't even talk about it, and all
the Q&A I can find on the web doesn't clear it up for me.
I've gotten this far:
# test.rb ---------
require 'optparse'
commands = OptionParser.new
commands.on("-h", "--help") # more or less, I get the .on stuff
commands.on("-e=RUN_ENV")
commands.parse(ARGV)
puts commands
# ---------
That will dump a display of the commands, but for the life of me, I
can't figure out how to determine which options were actually submitted.
And if the -e param was supplied, what's its value is.
cfp:~ > ruby a.rb --environment=test
---
:value: test
:given: true
cfp:~ > ruby a.rb --help
NAME
a.rb
SYNOPSIS
a.rb [options]+
DESCRIPTION
main.rb takes the pain of argument parsing away
PARAMETERS
specify run time environment
--help, -h
the packages ships with a tons of examples.
a @ http://codeforpeople.com/
--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama
Main {
option('environment', 'e'){
synopsis 'specify run time environment'
default 'development'
argument :required
validate{|arg| %w[ production development test ].include? arg}
}
def run
environment = params['environment']
y :given => environment.given?,
:value => environment.value
end
}
cfp:~ > ruby a.rb --environment=test
---
:value: test
:given: true
cfp:~ > ruby a.rb --help
NAME
a.rb
SYNOPSIS
a.rb [options]+
DESCRIPTION
main.rb takes the pain of argument parsing away
PARAMETERS
specify run time environment
--help, -h
the packages ships with a tons of examples.
a @ http://codeforpeople.com/
--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama
heh - well i've got about 51 projects on rubyforge attm, nearly all of them pre-dating bacon and co. if anyone wants to help migrate the tests.... i've got some old perl code that needs ported to ruby too. and a stack of svn projects which need moved to github....