def get_options
myopts = OpenStruct.new
myopts.ifile = nil
myopts.ofile = nil
myopts.dbtype = nil
opts = OptionParser.new do |opts|
opts.banner = "Database Dumper #{VERSION}"
opts.separator ""
opts.separator "Usage: ruby #{$0} [options]"
opts.separator ""
opts.separator "Options:"
opts.on("-i", "--ifile FILE", String,
"Select the database file to read",
" extension determined automatically") {|myopts.ifile|}
opts.on("-o", "--ofile FILE", String,
"Select the yaml file to write",
" defaults to same as database") {|myopts.ofile|}
opts.on("-t", "--type DBTYPE", DATABASES,
"Select the database type - required (no default)",
" One of: #{DATABASES.join(", ")}",
" Example: -t gdbm") {|myopts.dbtype|}
opts.on_tail("-h", "--help", "Show this message") do
puts opts.help
exit
end
opts.on_tail("-v", "--version", "Show version") do
puts "Database Dumper #{VERSION}"
exit
end
end
opts.parse!(ARGV)
raise(OptionParser::MissingArgument.new("-t")) if myopts.dbtype == nil
raise(OptionParser::ParseError, "Must specify input file!") if myopts.ifile.nil?
myopts.ofile = myopts.ifile.dup if myopts.ofile.nil?
myopts.ifile << ".gdbm" if myopts.dbtype == :gdbm
myopts.ifile << ".sqlite" if myopts.dbtype == :sqlite
myopts.ifile << ".sqlite3" if myopts.dbtype == :sqlite3
myopts.ofile << ".yaml"
return myopts
rescue OptionParser::ParseError
puts "ERROR - #{$!}"
puts "For help..."
puts " ruby #{$0} --help"
exit
end