読者です 読者をやめる 読者になる 読者になる

Thor で外部コマンドのオプションを help で出力する

Ruby

次のように外部で定義したコマンドの help を表示したかったんですが、これだとオプションの desc が出力されませんでした。

require "thor"

class Echo < Thor::Group
    class_option :name, desc: "name=[NAME]"
    def output
        puts options[:name]
    end
end

class CLI < Thor
    register Echo, "echo", "", ""
end


CLI.start ["help", "echo"]
# =>
# Usage:
#  test.rb

回避方法

次のように class_options を設定するとよいみたい。

require "thor"

class Echo < Thor::Group
    class_option :name, desc: "name=[NAME]"
    def output
        puts options[:name]
    end
end

class CLI < Thor
    register Echo, "echo", "echo [OPTION]", "Output"
    # class_options を設定
    tasks["echo"].options = Echo.class_options
end


# CLI.start ["help", "echo"]
# =>
# Usage:
#  test.rb
# Options:
#   [--name=NAME]  # name=[NAME]

参照