如何创建thor :: group生成器作为my_command的args

在我的gem中,我想要一个带有args的可执行命令,如下所示:

foo generate project foo generate config foo say_hi 

所以我做了

富/斌/富

 #!/usr/bin/env ruby require 'foo' Foo::Foo.start 

和Foo文件在foo / lib / thor / foo.rb中

 module Foo class Foo < Thor desc "generate [WHAT]" def generate(*args) end desc "say_hi" def say_hi(*args) .... end end end 

foo / lib / thor / generators / project.rbfoo / lib / thor / generators / config.rb

我想在哪里指定inheritance自Thor :: Group的类,如katz示例…

 module Foo module Generators class Project < Thor::Group include Thor::Actions .... end end end 

所以我的问题是:如何设置,以便我可以从可执行文件调用这些生成器,如:

 foo generate config 

我甚至走在正确的轨道上吗? 理想情况下, say_hi输入foo应该为say_hi和所有生成器提供帮助。

我也很难在最初工作。 这是我开始使用的模式:

$ cat cli.rb

 #!/usr/bin/env ruby require 'rubygems' require 'thor' require 'thor/group' module CLI class Greeter < Thor::Group def say_hi say "Hi" end def say_goodbye say "Goodbye" end end end module CLI class Crud < Thor desc 'create', 'Creates a sub-thing' def create say "Creating a sub-thing" end desc 'delete', 'Deletes a sub-thing' def delete say "Deleting a sub-thing" end end end module CLI class Root < Thor register CLI::Greeter, 'greet', 'greet', 'Executes a multi-step subtask' register CLI::Crud, 'crud', 'crud [COMMAND]', 'Delegates to a sub-command' end end CLI::Root.start 

$ ./cli.rb

 Tasks: cli.rb crud [COMMAND] # Delegates to a sub-command cli.rb greet # Executes a multi-step subtask cli.rb help [TASK] # Describe available tasks or one specific task 

$ ./cli.rb问候

 Hi Goodbye 

$ ./cli.rb crud

 Tasks: cli.rb crud create # Creates a sub-thing cli.rb crud delete # Deletes a sub-thing cli.rb crud help [COMMAND] # Describe subcommands or one specific subcommand 

$ ./cli.rb crud创建

 Creating a sub-thing 

$ ./cli.rb crud删除

 Deleting a sub-thing