Thor Variable Arguments
Thor is a Ruby Gem, which allows you to build command line applications which accept commands, in the same way git
accepts add
as a command.
The Helloworld example :
require "thor"
class MyCLI < Thor
desc "hello NAME", "say hello to NAME"
def hello(name)
puts "Hello #{name}"
end
end
MyCLI.start(ARGV)
The help and single input.
$ ruby thor_test.rb help hello
> Usage:
> thor_test.rb hello NAME
>
> say hello to NAME
$ ruby thor_test.rb Hello a
> Hello a
Now with multiple, inputs:
$ ruby thor_test.rb Hello a b
> thor_test.rb hello requires at least 1 argument: "thor_test.rb hello NAME”.
Not really what you want if you were building a command like git add
when you
would want all following arguments as inputs.
To accept a variable number of arguments is not Thor specific but a standard
ruby idiom. A splat in front of your variable ie *name
.
require "thor"
class MyCLI < Thor
desc "hello NAME", "say hello to NAME"
def hello(*name)
puts "Hello #{name * “ "}"
end
end
MyCLI.start(ARGV)
$ ruby thor_test.rb Hello a b
> Hello a b
Ruby
Command Line
]