Thor中的命令别名

Geo*_*ath 3 ruby thor

可以在Thor中为命令创建别名吗?

就像Commander中的命令别名一样.https://github.com/tj/commander#command-aliasing

我能够找到选项的别名,但不能找到命令本身.

使用Thor的例子,

#!/usr/bin/env ruby
require 'thor'

# cli.rb
class MyCLI < Thor
  desc "hello NAME", "say hello to NAME"
  def hello(name)
    puts "Hello #{name}"
  end
end

MyCLI.start(ARGV)
Run Code Online (Sandbox Code Playgroud)

我应该能跑了

$ ./cli.rb hello John
Hello John
Run Code Online (Sandbox Code Playgroud)

我想将命令"hello"别名为"hi".

Gaz*_*ler 8

您可以使用地图:

http://www.rubydoc.info/github/wycats/thor/master/Thor#map-class_method

#!/usr/bin/env ruby
require 'thor'

# cli.rb
class MyCLI < Thor

  desc "hello NAME", "say hello to NAME"
  def hello(name)
    puts "Hello #{name}"
  end

  map hi: :hello
end

MyCLI.start(ARGV)
Run Code Online (Sandbox Code Playgroud)

  • 似乎Thor的新版本期望映射参数是字符串或数组并且值为符号.见http://www.rubydoc.info/github/wycats/thor/master/Thor#map-class_method (3认同)