Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ...
- $quiet = ARGV.delete('-d')
- $interactive = ARGV.delete('-i')
- ...
- # Deal with ARGV as usual here, maybe using ARGF or whatever.
- opts = Trollop::options do
- opt :quiet, "Use minimal output", :short => 'q'
- opt :interactive, "Be interactive"
- opt :filename, "File to process", :type => String
- end
- % cat temp.rb
- require 'optparse'
- OptionParser.new do |o|
- o.on('-d') { |b| $quiet = b }
- o.on('-i') { |b| $interactive = b }
- o.on('-f FILENAME') { |filename| $filename = filename }
- o.on('-h') { puts o; exit }
- o.parse!
- end
- p :quiet => $quiet, :interactive => $interactive, :filename => $filename
- % ruby temp.rb
- {:interactive=>nil, :filename=>nil, :quiet=>nil}
- % ruby temp.rb -h
- Usage: temp [options]
- -d
- -i
- -f FILENAME
- -h
- % ruby temp.rb -d
- {:interactive=>nil, :filename=>nil, :quiet=>true}
- % ruby temp.rb -i
- {:interactive=>true, :filename=>nil, :quiet=>nil}
- % ruby temp.rb -di
- {:interactive=>true, :filename=>nil, :quiet=>true}
- % ruby temp.rb -dif apelad
- {:interactive=>true, :filename=>"apelad", :quiet=>true}
- % ruby temp.rb -f apelad -i
- {:interactive=>true, :filename=>"apelad", :quiet=>nil}
- #!/usr/bin/env ruby
- def usage(s)
- $stderr.puts(s)
- $stderr.puts("Usage: #{File.basename($0)}: [-l <logfile] [-q] file ...")
- exit(2)
- end
- $quiet = false
- $logfile = nil
- loop { case ARGV[0]
- when '-q' then ARGV.shift; $quiet = true
- when '-l' then ARGV.shift; $logfile = ARGV.shift
- when /^-/ then usage("Unknown option: #{ARGV[0].inspect}")
- else break
- end; }
- # Program carries on here.
- puts("quiet: #{$quiet} logfile: #{$logfile.inspect} args: #{ARGV.inspect}")
- #!/usr/bin/env ruby -s
- puts "#$0: Quiet=#$q Interactive=#$i, ARGV=#{ARGV.inspect}"
- $ ./test
- ./test: Quiet= Interactive=, ARGV=[]
- $ ./test -q foo
- ./test: Quiet=true Interactive=, ARGV=["foo"]
- $ ./test -q -i foo bar baz
- ./test: Quiet=true Interactive=true, ARGV=["foo", "bar", "baz"]
- $ ./test -q=very foo
- ./test: Quiet=very Interactive=, ARGV=["foo"]
- options = Parser.new do |p|
- p.version = "fancy script version 1.0"
- p.option :verbose, "turn on verbose mode"
- p.option :number_of_chairs, "defines how many chairs are in the classroom", :default => 1
- p.option :room_number, "select room number", :default => 2, :value_in_set => [1,2,3,4]
- end.process!
- Usage: micro-optparse-example [options]
- -v, --[no-]verbose turn on verbose mode
- -n, --number-of-chairs 1 defines how many chairs are in the classroom
- -r, --room-number 2 select room number
- -h, --help Show this message
- -V, --version Print version
- require 'optiflag'
- module Whatever extend OptiFlagSet
- flag "f"
- and_process!
- end
- ARGV.flags.f # => .. whatever ..
- def main
- ARGV.each { |a| eval a }
- end
- main
- if( ARGV.include( '-f' ) )
- file = ARGV[ARGV.indexof( '-f' ) + 1 )]
- ARGV.delete('-f')
- ARGV.delete(file)
- end
- class MyApp < Thor # [1]
- map "-L" => :list # [2]
- desc "install APP_NAME", "install one of the available apps" # [3]
- method_options :force => :boolean, :alias => :optional # [4]
- def install(name)
- user_alias = options[:alias]
- if options.force?
- # do something
- end
- # ... other code ...
- end
- desc "list [SEARCH]", "list all of the available apps, limited by SEARCH"
- def list(search = "")
- # list everything
- end
- end
- app install myname --force
- MyApp.new.install("myname")
- # with {'force' => true} as options hash
- case ARGV.join
- when /-h/
- puts "help message"
- exit
- when /-opt1/
- puts "running opt1"
- end
- # example
- # script.rb -u username -p mypass
- # check if there are even set of params given
- if ARGV.count.odd?
- puts 'invalid number of arguments'
- exit 1
- end
- # holds key/value pair of cl params {key1 => value1, key2 => valye2, ...}
- opts = {}
- (ARGV.count/2).times do |i|
- k,v = ARGV.shift(2)
- opts[k] = v # create k/v pair
- end
- # set defaults if no params are given
- opts['-u'] ||= 'root'
- # example use of opts
- puts "username:#{opts['-u']} password:#{opts['-p']}"
- opts = {}
- (ARGV.count/2).times do |i|
- k,v = ARGV.shift(2)
- opts[k] = v # create k/v pair
- end
- other_args = Clap.run ARGV,
- "-s" => lambda { |s| switch = s },
- "-o" => lambda { other = true }
- (options = []) << Acclaim::Option.new(:verbose, '-v', '--verbose')
- values = Acclaim::Option::Parser.new(ARGV, options).parse!
- puts 'Verbose.' if values.verbose?
- cmd.rb
- cmd.rb action
- cmd.rb action -a -b ...
- cmd.rb action -ab ...
- ACTION = ARGV.shift
- OPTIONS = ARGV.join.tr('-', '')
- if ACTION == '***'
- ...
- if OPTIONS.include? '*'
- ...
- end
- ...
- end
- def usage
- "usage: #{File.basename($0)}: [-l=<logfile>] [-q] file ..."
- end
- $quiet = false
- $logfile = nil
- ARGV.delete_if do |cur|
- next false if cur[0] != '-'
- case cur
- when '-q'
- $quiet = true
- when /^-l=(.+)$/
- $logfile = $1
- else
- $stderr.puts "Unknown option: #{cur}"
- $stderr.puts usage
- exit 1
- end
- end
- puts "quiet: #{$quiet} logfile: #{$logfile.inspect} args: #{ARGV.inspect}"
- opts = ParseOpt.new
- opts.usage = "git foo"
- opts.on("b", "bool", help: "Boolean") do |v|
- $bool = v
- end
- opts.on("s", "string", help: "String") do |v|
- $str = v
- end
- opts.on("n", "number", help: "Number") do |v|
- $num = v.to_i
- end
- opts.parse
- ## Options:
- ## -i, --interactive Interactive mode
- ## -q, --quiet Silent mode
- require 'easyoptions'
- unless EasyOptions.options[:quiet]
- puts 'Interactive mode enabled' if EasyOptions.options[:interactive]
- EasyOptions.arguments.each { |item| puts "Argument: #{item}" }
- end
Add Comment
Please, Sign In to add comment