LoginSignup
2
0

More than 5 years have passed since last update.

thor の option の alias 指定時のハイフン有無について

Last updated at Posted at 2017-02-17

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 はハイフンありで表示されるのが正しいのかな?と予想しました。

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0