簡體   English   中英

如何創建thor :: group生成器作為my_command的args

[英]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.rbfoo / 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM