GLI is the best way to make a “command-suite” command-line application, e.g. one like git
(for the best way to make a simpler command-line application, check out methadone).
GLI allows you to make a polished, easy-to-maintain command-line application without a lot of syntax, but without restricting you in any way from the power of OptionParser
.
<img src=“https://secure.travis-ci.org/davetron5000/gli.png?branch=gli-2” alt=“Build Status” />
Install if you need to:
gem install gli
The simplest way to get started is to create a scaffold project
gli init todo list add complete
This will create a basic scaffold project in ./todo
with:
-
executable in
./todo/bin/todo
. This file demonstrates most of what you need to describe your command line interface. -
an empty test in
./todo/test/default_test.rb
that can bootstrap your tests -
an empty feature in
./todo/features/todo.feature
that can bootstrap testing your CLI via Aruba. -
a gemspec shell
-
a README shell
-
Rakefile that can generate RDoc, package your Gem and run tests
-
A
Gemfile
suitable for use with Bundler to manage development-time dependencies
Now, you are ready to go:
> cd todo > bundle exec bin/todo help NAME todo - Describe your application here SYNOPSIS todo [global options] command [command options] [arguments...] VERSION 0.0.1 GLOBAL OPTIONS -f, --flagname=The name of the argument - Describe some flag here (default: the default) --help - Show this message -s, --[no-]switch - Describe some switch here COMMANDS add - Describe add here complete - Describe complete here help - Shows a list of commands or help for one command list - Describe list here > bundle exec bin/todo help list NAME list - Describe list here SYNOPSIS todo [global options] list [command options] Describe arguments to list here COMMAND OPTIONS -f arg - Describe a flag to list (default: default) -s - Describe a switch to list
All you need to do is fill in the documentation and your code; the help system, command-line parsing and many other awesome features are all handled for you.
Get a more detailed walkthrough on the main site
Tests should be passing supported MRI Rubies (see .travis.yml
for specifics).
Due to the vagaries of Travis, I can’t keep the test suite running on unsupported Rubies, however GLI has been used on older ones, like:
-
1.8.7
-
1.9.2
-
1.9.3
-
Ruby Enterprise Edition 1.8.7
-
JRuby
Extensive documentation is available at the wiki.
API Documentation is available here. Recommend starting with GLI::DSL or GLI::App.
- Author
-
Dave Copeland (davetron5000 at g mail dot com)
- Copyright
-
Copyright © 2010 by Dave Copeland
- License
-
Distributes under the Apache License, see LICENSE.txt in the source distro
- davetron5000.github.com/gli
-
RubyDoc
-
- www.github.com/davetron5000/gli
-
Source on GitHub
-
- www.github.com/davetron5000/gli/wiki
-
Documentation Wiki
-
:include:gli.rdoc