ruby的optparse使用小记

#自定义转换器

1
opts.accept(Hash) do |string| 2 hash = {} 3 string.split(',').each do |pair| 4 key,value = pair.split(/:/) 5 hash[key] = value 6 end 7 hash 8 end 9 opts.on('--custom ATTRS',Hash) do |hash| 10 custom_attributes = hash 11 end 12 A command like foo --custom foo:bar,baz:quux will result in custom_attributes getting the value 13 { 'foo' => 'bar', 'baz' => 'quux' } .

使用小记

 1 #!/usr/bin/env ruby
 2 require 'optparse'
 3 options = {}
 4 option_parser = OptionParser.new do |opts|
 5 # 创建option -switch
 6 #Option 作为switch,不带argument,用于将 switch 设置成 true 或 false
 7   opts.on("-i", "--iteration") { options[:iteration] = true }
 8 
 9 
10 # 创建optin -flag
11   opts.on("-u USER", /^(.+)\.(.+)$/) do |user|
12     options[:user] = user
13   end
14   opts.on("-p PASSWORD", "--uname ppp") do |password, ppp|
15 
16     options[:uname] = ppp
17     options[:password] = password
18   end
19 
20 #hash
21   servers = {dev: '127.0.0.1',
22              qa: 'qa001.example.com',
23              prod: 'www.example.com'}
24   opts.on('--server SERVER', servers) do |address|
25     options[:address]=address
26   end
27 
28 #default true or false
29   opts.on('--[no-]verbose') do |flg|
30     options[:flg]=flg
31   end
32 # Option 作为 flag,带一组用逗号分割的arguments,用于将arguments作为数组解析
33   opts.on('-a A,B', '--array A,B', Array, 'List of arguments') do |value|
34     options[:array] = value
35   end
36 end
37 
38 option_parser.parse!
39 puts options.inspect

 

posted on 2016-03-18 13:59  c3tc3tc3t  阅读(1039)  评论(0编辑  收藏  举报