Thor のコマンドラインオプションに hash 値を渡す
渡し方がよくわからなかったので覚書。
コード
require "thor" class CLI < Thor desc "", "" # オプションの引数を hash 値で受けとる option :config, type: :hash def sub puts options[:config] end end # hash 値を渡す場合 # {key}:{value} {key}:{value}... と渡す CLI.start %w(sub --config=key1:value1 key2:value2) # => {"key1"=>"value1", "key2"=>"value2"}
オプションに対して key1:value1 key2:value2 みたいなフォーマットで渡せば hash 値としてパースされます。
key1: value みたいに : の前後にスペースが合ったり、 { key1: value1, key2: value2 } みたいな Ruby 形式だとうまく渡せないので注意。