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
.
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, but we currently support:
2.1
2.2
2.3
2.4
JRuby
GLI likely works on older rubies, but the cost of keeping tests passing on those versions (which are now totally unsupported by Ruby core) is too high.
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
RubyDoc
Source on GitHub
Documentation Wiki
v2.12.1
Root dir of project
.
This is the directory where the project”s directory will be made, so if you specify a project name ”foo” and the root dir of ”.”, the directory ”./foo” will be created’
Show this message
Dry run; dont change the disk
Be verbose
Display the program version