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 形式だとうまく渡せないので注意。