Ruby 如何在thor中使用或添加子命令功能?

Ruby 如何在thor中使用或添加子命令功能?,ruby,rubygems,thor,Ruby,Rubygems,Thor,我正在使用thor创建CLI应用程序。它进行得很顺利,但现在我被子命令功能卡住了 它的github维基上没有任何东西,谷歌搜索过,但没有任何帮助 那么,有人能给我演示或指出如何实现子命令功能吗?试试这样的方法(file test.rb): (除了“test.rb bar”的帮助信息不太正确之外,这基本上是按照预期工作的。我认为应该说“test.rb bar baz…”,而不是“test.rb baz…”。) 希望这有帮助 试试这样的方法(文件test.rb): (除了“test.rb bar”的

我正在使用thor创建CLI应用程序。它进行得很顺利,但现在我被子命令功能卡住了

它的github维基上没有任何东西,谷歌搜索过,但没有任何帮助

那么,有人能给我演示或指出如何实现子命令功能吗?

试试这样的方法(file test.rb):

(除了“test.rb bar”的帮助信息不太正确之外,这基本上是按照预期工作的。我认为应该说“test.rb bar baz…”,而不是“test.rb baz…”。)

希望这有帮助

试试这样的方法(文件test.rb):

(除了“test.rb bar”的帮助信息不太正确之外,这基本上是按照预期工作的。我认为应该说“test.rb bar baz…”,而不是“test.rb baz…”。)

希望这有帮助

查看:

从该站点(编辑一点以节省空间并突出显示子命令用法):

模块GitCLI 类Remote“,”为位于的存储库添加一个名为 选项:t,:banner=>“” 选项:m,:banner=>“” 选项:f=>:boolean,:tags=>:boolean,:mirror=>:string def添加(名称、url) #实现git远程添加 结束 描述“重命名”,“将远程重命名为” def重命名(旧、新) 结束 结束 类Git[…],“从另一个存储库下载对象和引用” 选项:all=>:boolean,:multiple=>:boolean 选项:append,:type=>:boolean,:alias=>:a def提取(响应,*参考规范) #在这里实现git获取 结束 描述“远程子命令…参数”,“管理跟踪存储库集” 子命令“remote”,这里使用的remote子命令。。。 结束 结束 hth…

签出:

从该站点(编辑一点以节省空间并突出显示子命令用法):

模块GitCLI 类Remote“,”为位于的存储库添加一个名为 选项:t,:banner=>“” 选项:m,:banner=>“” 选项:f=>:boolean,:tags=>:boolean,:mirror=>:string def添加(名称、url) #实现git远程添加 结束 描述“重命名”,“将远程重命名为” def重命名(旧、新) 结束 结束 类Git[…],“从另一个存储库下载对象和引用” 选项:all=>:boolean,:multiple=>:boolean 选项:append,:type=>:boolean,:alias=>:a def提取(响应,*参考规范) #在这里实现git获取 结束 描述“远程子命令…参数”,“管理跟踪存储库集” 子命令“remote”,这里使用的remote子命令。。。 结束 结束
嗯…

这很有帮助。但我想用另一种方式来实现它。有一个子命令方法完成了它。请举例说明?我想它会回答原始海报的问题。这很有帮助。但我想用另一种方式来实现它。有一个子命令方法完成了它。请举例说明?我想它会回答原始海报的问题。
#!/usr/bin/env ruby

require 'rubygems'
require 'thor'
require 'thor/group'  # This is required -- it's not a bug, it's a feature!

class Bar < Thor
  desc "baz", "Whatever"
  def baz
    puts "Hello from Bar"
  end
end

class Foo < Thor
  desc "go", "Do something"
  def go
    puts "Hello there!"
  end

  register Bar, :bar, "bar", "Do something else"
end

if __FILE__ == $0
  Foo.start
end
> test.rb
Tasks:
  test.rb bar          # Do something else
  test.rb go           # Do something
  test.rb help [TASK]  # Describe available tasks or one specific task

> test.rb go
Hello there!
> test.rb bar
Tasks:
  test.rb baz             # Whatever
  test.rb help [COMMAND]  # Describe subcommands or one specific subcommand

> test.rb bar baz
Hello from Bar
> test.rb baz
Could not find task "baz".
>
module GitCLI class Remote ", "Adds a remote named for the repository at " option :t, :banner => "" option :m, :banner => "" options :f => :boolean, :tags => :boolean, :mirror => :string def add(name, url) # implement git remote add end desc "rename ", "Rename the remote named to " def rename(old, new) end end class Git [...]", "Download objects and refs from another repository" options :all => :boolean, :multiple => :boolean option :append, :type => :boolean, :aliases => :a def fetch(respository, *refspec) # implement git fetch here end desc "remote SUBCOMMAND ...ARGS", "manage set of tracked repositories" subcommand "remote", Remote ### SUBCOMMAND USED HERE... end end