加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何让Thor显示选项?

发布时间:2020-12-17 03:28:44 所属栏目:百科 来源:网络整理
导读:这是我的 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 puts "Hi,#{options[:name]}!" end desc 'bye',
这是我的 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
            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]

Greet with a command

如何让它看起来像这样?

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!

哪个,是的,是错的 – 它在帮助中没有子命令.在托尔有一个bug申请.但是,它正确显示方法选项.

然而,您正在寻找的是一种类方法.这是为整个CLI :: Greet类定义的方法,而不仅仅是#hi方法.

你这样做是这样的:

require 'thor'
require 'thor/group'

module CLI

    class Greet < Thor
        desc 'hi','Say hi!'
        class_option :number,:description => 'Number to call',:default => '555-1212'
        method_option :name,#{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 with a command'        
        tasks["greet"].options = CLI::Greet.class_options
    end
end

CLI::Root.start

有了这个,ruby greet.rb帮助迎接返回

Usage:
  greet.rb greet [COMMAND]

Options:
  [--number=NUMBER]  
                     # Default: 555-1212

Greet with a command

注意这里仍然需要一个hack:CLI :: Root中的任务[“greet”].options = CLI :: Greet.class_options行.在托尔也有一个bug申请.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读