# Trollop 1.5 Released

**URL:** <https://www.ruby-forum.com/t/trollop-1-5-released/90766>\
**Category:** Ruby\
**Created:** [April 1, 2007, 4:35am UTC](https://www.ruby-forum.com/t/trollop-1-5-released/90766 "2007-04-01T04:35:31Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![trucker](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/ecae2f/32.png) [@trucker](https://www.ruby-forum.com/u/trucker)\
**Post date:** [April 1, 2007, 4:35am UTC](https://www.ruby-forum.com/t/trollop-1-5-released/90766/1 "2007-04-01T04:35:31Z")

</div>

Trollop version 1.5 has been released!

[http://trollop.rubyforge.org](http://trollop.rubyforge.org)

Trollop is YAFCLAP — yet another fine commandline argument  
processing library for Ruby. Trollop is designed to provide the  
maximal amount of GNU-style argument processing in the minimum number  
of lines of code (for you, the programmer).

Trollop provides a nice automatically-generated help page, robust  
option parsing, and sensible defaults for everything you don’t  
specify.

Synopsis:

###### simple

opts = Trollop::options do  
opt :monkey, “Use monkey mode.”  
opt :goat, “Use goat model”, :default =\> true  
opt :num\_limbs, “Set number of limbs”, :default =\> 4  
end

p opts

###### complex

opts = Trollop::options do  
version “test 1.2.3 (c) 2007 William M.”  
banner \<\<-EOS  
Test is an awesome program that does something very, very important.

Usage:  
test [options] +  
where [options] are:  
EOS

```
opt :ignore, "Ignore incorrect values"
opt :file, "Extra data filename to read in, with a very long option 

```

description like this one", :type =\> String  
opt :volume, “Volume level”, :default =\> 3.0  
opt :iters, “Number of iterations”, :default =\> 5  
end  
Trollop::die :volume, “must be non-negative” if opts[:volume] \< 0  
Trollop::die :file, “must exist” unless File.exists?(opts[:file]) if  
opts[:file]

== REQUIREMENTS:

- none

Changes:

== 1.5 / 2007-03-31

- –help and --version do the right thing even if the rest of the  
command line is incorrect.

- Added #conflicts and #depends to model dependencies and exclusivity  
between arguments.

- Minor bugfixes.

---

<div class="post-metadata">

**Author:** ![trucker](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/ecae2f/32.png) [@trucker](https://www.ruby-forum.com/u/trucker)\
**Post date:** [April 1, 2007, 11:59am UTC](https://www.ruby-forum.com/t/trollop-1-5-released/90766/2 "2007-04-01T11:59:06Z")

</div>

2007/4/1, William M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> option parsing, and sensible defaults for everything you don’t  
> end  
> Usage:  
> Trollop::die :file, “must exist” unless File.exists?(opts[:file]) if opts[:file]
> 
> - Added #conflicts and #depends to model dependencies and exclusivity  
> between arguments.
> 
> - Minor bugfixes.
> 
> –  
> William [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

Hi William,

it’s indeed a really nice parser. I especially liked how it’s small  
and still very powerful. What do you think it would take to add a  
groff → man output generator ?

---

<div class="post-metadata">

**Author:** ![trucker](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/ecae2f/32.png) [@trucker](https://www.ruby-forum.com/u/trucker)\
**Post date:** [April 2, 2007, 12:28am UTC](https://www.ruby-forum.com/t/trollop-1-5-released/90766/3 "2007-04-02T00:28:39Z")

</div>

Excerpts from Jonas P.'s message of Sun Apr 01 02:57:54 -0700  
2007:

> it’s indeed a really nice parser. I especially liked how it’s small  
> and still very powerful. What do you think it would take to add a  
> groff -\> man output generator ?

There’s a gnu tool called “help2man” that works very well at turning  
Trollop output into a man page, especially if you format things how it  
expects them.

I’ve just release version 1.6, which doesn’t do the curses screen-width  
detection magic unless it’s running on a terminal. This is necessary for  
help2man (and “less”!) to work right.

---

<div class="post-metadata">

**Author:** ![trucker](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/ecae2f/32.png) [@trucker](https://www.ruby-forum.com/u/trucker)\
**Post date:** [April 2, 2007, 11:36am UTC](https://www.ruby-forum.com/t/trollop-1-5-released/90766/4 "2007-04-02T11:36:46Z")

</div>

2007/4/2, William M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> detection magic unless it’s running on a terminal. This is necessary for  
> help2man (and “less”!) to work right.

Cool ! I might try it on my next project. Do you plan to add a default  
usage if no banner is given ? Something like : “Usage :  
#{File.basename($0)} [OPTIONS] …”.
