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)
Note on Patches/Pull Requests
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.