applix
Building command line apps like:
Defaults = { :verbose => false }
Applix.main(ARGV, Defaults) do
handle(:one) do |*args, opts|
if opts[:verbose]
puts "arguments: #{args.inspect}"
puts "options: #{opts.inspect}"
end
end
handle(:two) do |*args, opts|
if opts[:verbose]
puts "arguments: #{args.inspect}"
puts "options: #{opts.inspect}"
end
end
end
can be called like:
$ app --verbose one 1234 x y z
arguments: ["1234", "x", "y", "z"]
options: {:verbose => true}
$
Command line options will be processed with Hash#from_argv. Hash#from_argv
builds a hash from ARGV like argument vector according to following examples:
'-f' --> { :f => true }
'--flag' --> { :flag => true }
'--flag:false' --> { :flag => false }
'--flag=false' --> { :flag => 'false' }
'--option=value' --> { :option => "value" }
'--int=1' --> { :int => "1" }
'--float=2.3' --> { :float => "2.3" }
'--float:2.3' --> { :float => 2.3 }
'--txt="foo bar"' --> { :txt => "foo bar" }
'--txt:\'"foo bar"\'' --> { :txt => "foo bar" }
'--txt:%w{foo bar}' --> { :txt => ["foo", "bar"] }
'--now:Time.now' --> { :now => #<Date: 3588595/2,0,2299161> }
Remaining arguments(non flag/options) are inserted as [:args], eg:
Hash.from_argv %w(--foo --bar=loo 123 now)
becomes:
{ :foo => true, :bar => 'loo', :args => ["123", "now"] }
Note on Patches/Pull Requests
- Fork the project.
- Make your feature addition or bug fix.
- Add tests for it. This is important so I don’t break it in a future version unintentionally.
- Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
- Send me a pull request. Bonus points for topic branches.
Copyright
Copyright (c) 2009/11 dirk luesebrink. See LICENSE for details.