thor では option に alias を設定できます。
この alias にハイフンを付けた場合と付けない場合の動作について確認します。
ハイフンなしの場合
コード
require 'thor'
class SampleCLI < Thor
desc "command usage", "command desc"
option "opt", aliases: "o", type: :boolean
def command(name)
puts "opt on" if options['opt']
puts "command #{name}"
end
end
SampleCLI.start(ARGV)
動作確認
--opt
, -o
の両方で呼び出すことができます。
$ ruby sample1.rb command hoge
command hoge
$ ruby sample1.rb command -o hoge
opt on
command hoge
$ ruby sample1.rb command --opt hoge
opt on
command hoge
ヘルプの確認
o
alias はハイフンが省略されて表示されます
ruby sample1.rb help command
Usage:
sample.rb1 command usage
Options:
o, [--opt], [--no-opt]
command desc
ハイフンありの場合
コード
require 'thor'
class SampleCLI < Thor
desc "command usage", "command desc"
option "opt", aliases: "-o", type: :boolean
def command(name)
puts "opt on" if options['opt']
puts "command #{name}"
end
end
SampleCLI.start(ARGV)
動作確認
$ ruby sample2.rb command hoge
command hoge
$ ruby sample2.rb command -o hoge
opt on
command hoge
$ ruby sample2.rb command --opt hoge
opt on
command hoge
ヘルプの確認
-o
alias はハイフンつきで表示されます
$ ruby sample2.rb help command
sample2.rb command usage
Options:
-o, [--opt], [--no-opt]
command desc
thor のコードを確認
spec/fixtures/group.thor
thor のfixtureです。
ハイフンありもハイフンなしも想定しているようです。
# 略
class_option :third, :type => :numeric, :desc => "The third argument", :default => 3,
:banner => "THREE", :aliases => "-t"
class_option :fourth, :type => :numeric, :desc => "The fourth argument"
class_option :simple, :type => :numeric, :aliases => 'z'
class_option :symbolic, :type => :numeric, :aliases => [:y, :r]
# 略
雑感
本当はハイフンなしで指定したときに help はハイフンありで表示されるのが正しいのかな?と予想しました。