Git-Like Interface Command Line Parser

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.

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
    todo - Describe your application here

    todo [global options] command [command options] [arguments...]


    -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

    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
    list - Describe list here

    todo [global options] list [command options] Describe arguments to list here

    -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

Supported Platforms

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.



Dave Copeland (davetron5000 at g mail dot com)


Copyright © 2010 by Dave Copeland


Distributes under the Apache License, see LICENSE.txt in the source distro


gli CLI documentation