File: README.rdoc

package info (click to toggle)
libmixlib-cli-ruby 1.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 96 kB
  • ctags: 12
  • sloc: ruby: 268; makefile: 2
file content (79 lines) | stat: -rw-r--r-- 2,348 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
== Mixlib::CLI

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'
  
  class MyCLI
    include Mixlib::CLI

    option :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 => 0

  end
  
  # ARGV = [ '-c', 'foo.rb', '-l', 'debug' ]
  cli = MyCLI.new
  cli.parse_options
  cli.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):

  class MyConfig
    extend(Mixlib::Config)
    
    log_level   :info
    config_file "default.rb"
  end
  
  class MyCLI
    def run(argv=ARGV)
      parse_options(argv)
      MyConfig.merge!(config)
    end
  end
  
  c = MyCLI.new
  # ARGV = [ '-l', 'debug' ]
  c.run
  MyConfig[: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.

=== New in 1.2.0

We no longer destructively manipulate ARGV.

Have fun!