3

コマンドラインから呼び出すときにユーザーが使用しなければならない名前を変更する方法はありますか? たとえば、super_awesome_gem という Thor コマンドライン アプリがあります。私は自分の gem を super_awesome_gem と呼びたいのですが、ユーザーがコマンド ラインからそれを呼び出したときに、sup_awe などを呼び出せるようにしたいだけです。

gemspec ファイルとファイル名とフォルダー名を編集しようとしましたが、これを行う適切な方法が何であるか、またはあるとしてもわかりません。

gem に 1 つの方法で名前を付け、コマンド ライン呼び出しを別の名前にする方法はありますか?

4

2 に答える 2

5

gem の名前とそれにバンドルされる実行可能ファイルは、まったく同じである必要はありません。gemspec では、次の方法で実行可能ファイルのリストを定義できますexecutables

Gem::Specification.new do |s|
  s.name = "super_awesome_gem"
  # other gemspec stuff
  s.executables = ["sup_awe"]
end

sup_awegemspec のリストにリストされていて、実行可能である限りfiles、gem をインストールした後にユーザーのパスに含まれます。Bundler は、gemspec をブートストラップするときに、これをさらに簡単にします

s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }

のすべてが実行可能ファイルとして扱わbin/れます。

これは、executable/bin ファイルに任意の名前を付けることができ、gem に合わせて名前を付ける必要がないことを長い言い方で表したものです。

于 2013-04-26T13:37:09.953 に答える
2

これを実現する別の方法は、エイリアスです。

alias my_command=original_command

最適な場所に配置するだけです。

3 番目の方法は、wrapper_script を使用することです。これは、目的の名前のスクリプトであり、元のコマンドを呼び出して、取得したすべての引数を渡します。

#!/bin/sh
original_command $@

または Windows の cmd.exe で:

@echo off
original_command %*
于 2013-04-26T08:15:02.917 に答える