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
.
<img src=“https://secure.travis-ci.org/davetron5000/gli.png?branch=gli-2” alt=“Build Status” />
Use
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
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
Documentation
Extensive documentation is available at the wiki.
API Documentation is available here. Recommend starting with GLI::DSL or GLI::App.
Credits
- 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
Links
- davetron5000.github.com/gli
-
RubyDoc
-
- www.github.com/davetron5000/gli
-
Source on GitHub
-
- www.github.com/davetron5000/gli/wiki
-
Documentation Wiki
-
gli
CLI documentation
:include:gli.rdoc