雷神中的命令别名

Command Aliasing in Thor

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

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

我可以找到选项的别名,但不能找到命令本身的别名。

使用雷神的例子,

#!/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)

我应该可以运行

$ ./cli.rb hello John
Hello John

我也想将命令 "hello" 别名为 "hi"。

您可以为此使用地图:

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)

使用 method_option 作为别名。

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

    # cli.rb
    class MyCLI < Thor
      desc "hello NAME", "say hello to NAME"
      method_option :hello , :aliases => "-hello" , :desc => "Hello Command" 
      def hello(name)
        puts "Hello #{name}"
      end
    end

    MyCLI.start(ARGV)