A tiny wrapper over ruby's awesome OptionParser (standard) which gives easy facility of subcommands. It has a similar interface to git and prints subcommands summary as well.
subcommands using all of OptionParser's features
aliases for subcommands
e.g Assuming a program “prog” with subcommands “del” and “add”
prog help prog --help prog help del prog del --help prog del --force file.a prog --verbose del --force file.a
if a program has subcommands foo and baz ruby subcommand.rb help ruby subcommand.rb --help ruby subcommand.rb help foo ruby subcommand.rb foo --help ruby subcommand.rb baz --quiet "some text" ruby subcommand.rb --verbose foo --force file.zzz
1. define global_options (optional) global_options do |opts| opts.banner = "Usage: subcommand.rb [options] [subcommand [options]]" opts.description = "Stupid program that does something" opts.separator "" opts.separator "Global options are:" opts.on("-v", "--[no-]verbose", "Run verbosely") do |v| options[:verbose] = v end end 2. define commands using command(). Send multiple names for aliases. command :foo do |opts| opts.banner = "Usage: foo [options]" opts.description = "desc for foo" opts.on("-f", "--[no-]force", "force action") do |v| options[:force] = v end end # aliases init and create command :init, :create do |opts| ... 3. call opt_parse()
$ ruby subcommand.rb help Usage: subcommand.rb [options] [subcommand [options]] Stupid program that does something Global options are: -v, --[no-]verbose Run verbosely Commands are: foo : desc for foo baz : desc for baz Aliases: goo - foo See 'subcommand.rb help COMMAND' for more information on a specific command. $ ruby subcommand.rb help foo Usage: foo [options] desc for foo -f, --[no-]force force action
sudo gem install subcommand
Or, copy into your lib directory and require (see source for sample usage)
Fork the project.
Make your feature addition or bug fix.
Add tests for it. This is important so I don't break it in a future version unintentionally.
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
Send me a pull request. Bonus points for topic branches.
Copyright © 2010 Rahul Kumar. See LICENSE for details.