Skip to content

Repository files navigation

Mixlib::CLI provides a class-based command line option parsing object, like the one used in Chef, Ohai and Relish. To use in your project:

require'rubygems'require'mixlib/cli'classMyCLIincludeMixlib::CLIoption:config_file, :short=>"-c CONFIG",
:long=>"--config CONFIG",
:default=>'config.rb',
:description=>"The configuration file to use"option:log_level, :short=>"-l LEVEL",
:long=>"--log_level LEVEL",
:description=>"Set the log level (debug, info, warn, error, fatal)",
:required=>true,
:proc=>Proc.new { |l|l.to_sym }
option:help,
:short=>"-h",
:long=>"--help",
:description=>"Show this message",
:on=>:tail,
:boolean=>true,
:show_options=>true,
:exit=>0end# ARGV = [ '-c', 'foo.rb', '-l', 'debug' ]cli = MyCLI.newcli.parse_optionscli.config[:config_file] # 'foo.rb'cli.config[:log_level] # :debug

If you are using this in conjunction with Mixlib::Config, you can do something like this (building on the above definition):

classMyConfigextend(Mixlib::Config)
log_level:infoconfig_file"default.rb"endclassMyCLIdefrun(argv=ARGV)
parse_options(argv)
MyConfig.merge!(config)
endendc = MyCLI.new# ARGV = [ '-l', 'debug' ]c.runMyConfig[:log_level] # :debug

Available arguments to ‘option’:

:short

The short option, just like from optparse. Example: “-l LEVEL”

:long

The long option, just like from optparse. Example: “–level LEVEL”

:description

The description for this item, just like from optparse.

:default

A default value for this option

:required

Prints a message informing the user of the missing requirement, and exits. Default is false.

:on

Set to :tail to appear at the end, or :head to appear at the top.

:boolean

If this option takes no arguments, set this to true.

:show_options

If you want the option list printed when this option is called, set this to true.

:exit

Exit your program with the exit code when this option is specified. Example: 0

:proc

If set, the configuration value will be set to the return value of this proc.

:required works, and we now support Ruby-style boolean option negation (e.g. ‘–no-cookie’ will set ‘cookie’ to false if the option is boolean)

We no longer destructively manipulate ARGV.

Have fun!

About

A mixin for creating command line applications - gives an easy DSL for argument specification and processing

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages