Topt
A Thor compatible replacement for Ruby's OptionParser (optparse).
Provides extended options parsing, compared to optparse, using a Thor compatible option parser.
About
This is still a very fresh extraction. I haven't created any specs yet, so use with caution.
Open an issue if you want to use this but you're scared.
Example
See the examples directory from examples.
class Command
extend Topt
option :verbose, type: :boolean, aliases: %w[-v], :default => false, desc: "Be noisy"
argument :filename
def initialize(given_args=ARGV)
@arguments, @options, @extras = self.class.parse_options!(given_args)
rescue Topt::Error => e
puts e.message
puts "Usage: command [--verbose] filename"
exit 1
end
def call
filename = @arguments[:filename]
puts "Opening file #{filename}" if @options[:verbose]
File.open(filename) do |f|
f.each_line do |line|
puts "outputting line #{line}" if @options[:verbose]
puts line
end
end
puts "Done" if @options[:verbose]
end
end
Command.new(ARGV).call
Credit
A substantial portion of this code is extracted directly from Thor by Yehuda Katz, José Valim, and more.