Skip to content
Dave Copeland edited this page May 20, 2012 · 18 revisions

Intro

GLI Logo

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

Install

Install if you need to:

> gem install gli

Use

The simplest way to get started is to create a scaffold project

> gli init todo list add complete
> cd todo
> 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

  > 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

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 ./my_proj comes with:

  • executable in ./my_proj/bin/my_proj. This file demonstrates most of what you need to describe your command line interface.
  • an empty test in ./my_proj/test/test_nothing.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 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.

More

Clone this wiki locally