2012-02-18 13 views
2

的ARGS在我的寶石,我想有一個ARGS可執行命令,像這樣:如何創建托爾::發電機組作爲my_command

foo generate project 
foo generate config 
foo say_hi 

所以我做了

FOO /斌/富

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

而富在富文件/ lib中/雷神/ foo.rb

module Foo 
    class Foo < Thor 

    desc "generate [WHAT]" 
    def generate(*args) 

    end 

    desc "say_hi" 
    def say_hi(*args) 
     .... 
    end 

    end 
end 

而且富/ lib中/雷神/發電機/ project.rb富/ lib中/雷神/發電機/ config.rb

在哪裏,我想從指定繼承托爾班::集團像卡茨例子...

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

所以我的問題是:我如何設置的東西,這樣我就可以調用從可執行像發電機:

foo generate config 

我是否在正確的軌道上?理想情況下,自己輸入foo應爲say_hi和所有發電機提供幫助。

+0

看起來像雷神#寄存器可能會有幫助。我會堅持下去。 – 2012-02-18 08:53:58

回答

7

我一開始也遇到了麻煩。這裏,我已經開始使用模式:

$貓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 
+0

這看起來不錯,謝謝!看來你沒有問題得到正確格式化的幫助。我設法讓事情工作,但不得不解析幫助字符串以刪除冒號。我將來會使用你的解決方案。 – 2012-06-01 00:33:23