# 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 => # } 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.