thorでサブコマンドを指定しない方法
thorは CLI を作成するのによく使われる gem (らしい)ですが、サブコマンドを指定せずに実行する方法が Github Wiki や 公式サイト に見当たらず、小一時間悩んだのでメモっておく。
例えば こんなことがやりたい。
$ bin/cli.rb -l ja world こんにちは world $ bin/cli.rb -l en world Hello world
解決方法
default_command と 可変長引数を使えばよい。
#!/usr/bin/env ruby require 'thor' module MyApp class CLI < Thor default_command :hello desc 'hello', 'description here' method_option :lang, type: :string, aliases: ['-l'] def hello *args case options[:lang] when "ja" hello = 'こんにちは' else hello = 'Hello' end puts "#{hello} #{args.join(', ')}" end end end MyApp::CLI.start