Skip to content
Alan W. Smith edited this page Jan 25, 2014 · 18 revisions


GLI Logo

GLI lets you create command-suite (i.e. git-like) style applications in Ruby very easily.


Install if you need to:

> gem install gli


The simplest way to get started is to create a scaffold project. For example, a command-suite app named "todo" that has the commands "list", "add" and "complete" is created with:

> gli init todo list add complete

A new ./todo directory is created containing the app. View the basic output of the scaffold with:

> cd todo
> bundle exec bin/todo help

Which will output:

    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

  > 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

As you can see, a lot of work has been done fore you, in terms of help output and command-line parsing. This is the point of GLI. All you need to do is fill in your app-specific logic.

The scaffold project that was created in ./todo comes 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 as well as a basic feature file in features that you can run via aruba to do BDD-style tests
  • a ./todo.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

See Features for a longer list of GLI's features. Also, see an Example of a gli program.