Ruby 如何让Thor显示选项?
这是我的Ruby代码:Ruby 如何让Thor显示选项?,ruby,gem,thor,Ruby,Gem,Thor,这是我的Ruby代码: require 'thor' require 'thor/group' module CLI class Greet < Thor desc 'hi', 'Say hi!' method_option :name, :type => :string, :description => 'Name to greet', :default => 'there' def hi
require 'thor'
require 'thor/group'
module CLI
class Greet < Thor
desc 'hi', 'Say hi!'
method_option :name, :type => :string, :description => 'Name to greet', :default => 'there'
def hi
puts "Hi, #{options[:name]}!"
end
desc 'bye', 'say bye!'
def bye
puts "Bye!"
end
end
class Root < Thor
register CLI::Greet, 'greet', 'greet [COMMAND]', 'Greet with a command'
end
end
CLI::Root.start
我怎么才能让它看起来像这样
C:\temp>ruby greet.rb help greet
Usage:
greet.rb greet [COMMAND]
--name Name to greet
Greet with a command
你有两件事要做。首先,您将--name分配给了一个方法,而不是整个
CLI::Greet
类。因此,如果使用该命令:
ruby greet.rb greet help hi
你得到
Usage:
greet.rb hi
Options:
[--name=NAME]
# Default: there
Say hi!
是的,这是错误的——它在帮助中没有子命令。在托尔有一份申请。但是,它正确地显示了方法选项
然而,看起来您正在寻找的是一个类方法。这是为整个CLI::Greet
类定义的方法,而不仅仅是为#hi
方法定义的方法
你应该这样做:
require 'thor'
require 'thor/group'
module CLI
class Greet < Thor
desc 'hi', 'Say hi!'
class_option :number, :type => :string, :description => 'Number to call', :default => '555-1212'
method_option :name, :type => :string, :description => 'Name to greet', :default => 'there'
def hi
puts "Hi, #{options[:name]}! Call me at #{options[:number]}"
end
desc 'bye', 'say bye!'
def bye
puts "Bye! Call me at #{options[:number]}"
end
end
class Root < Thor
register CLI::Greet, 'greet', 'greet [COMMAND]', 'Greet with a command'
tasks["greet"].options = CLI::Greet.class_options
end
end
CLI::Root.start
注意这里仍然需要一个技巧:在CLI::Root
中的tasks[“greet”].options=CLI::greet.class_options
行。在托尔也有这样的档案
require 'thor'
require 'thor/group'
module CLI
class Greet < Thor
desc 'hi', 'Say hi!'
class_option :number, :type => :string, :description => 'Number to call', :default => '555-1212'
method_option :name, :type => :string, :description => 'Name to greet', :default => 'there'
def hi
puts "Hi, #{options[:name]}! Call me at #{options[:number]}"
end
desc 'bye', 'say bye!'
def bye
puts "Bye! Call me at #{options[:number]}"
end
end
class Root < Thor
register CLI::Greet, 'greet', 'greet [COMMAND]', 'Greet with a command'
tasks["greet"].options = CLI::Greet.class_options
end
end
CLI::Root.start
Usage:
greet.rb greet [COMMAND]
Options:
[--number=NUMBER]
# Default: 555-1212
Greet with a command