[英]How do I create thor::group generators as args of my_command
在我的gem中,我想要一個帶有args的可執行命令,如下所示:
foo generate project
foo generate config
foo say_hi
所以我做了
富/斌/富
#!/usr/bin/env ruby
require 'foo'
Foo::Foo.start
還有foo / lib / thor / foo.rb中的Foo文件
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.rb和foo / lib / thor / generators / config.rb
我想在哪里指定從Thor :: Group繼承的類,例如katz示例...
module Foo
module Generators
class Project < Thor::Group
include Thor::Actions
....
end
end
end
所以我的問題是:如何進行設置,以便可以從可執行文件中調用這些生成器,例如:
foo generate config
我是否在正確的軌道上? 理想情況下,獨自鍵入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原始創建
Creating a sub-thing
$ ./cli.rb crud刪除
Deleting a sub-thing
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.