使い方
$ brew tap mumoshu/anyenv
$ brew install anyenv --HEAD
ソースコード
つくった経緯
普段Macで開発してるのですが、ミドルウェア類はDocker上、アプリは場合によってMacやVagrantで作成した仮想マシン上、コマンドラインツール、IDEその他はMac上で動かしてます。Mac上で動かすアプリ以外のものは基本的に全てHomebrew + homebrew-fileで入れてます。
そろそろanyenvを使い始めようかな…と思ったところbrew installできなかったので、簡単に作れるものなら作ってみよう…ということで作ってみました。
つくり方
(1) GitHub上の mumoshu/homebrew-<formula名>
というレポジトリに、(2) 以下の様な内容の homebrew-<formula名>.rb
を置くだけ。
class Anyenv < Formula
desc "anyenv - all in one for **env" if respond_to? :desc
homepage "https://github.com/riywo/anyenv"
head "https://github.com/riywo/anyenv.git"
version "5693de4"
def install
inreplace "libexec/anyenv", %Q|ANYENV_ROOT="${HOME}/.anyenv"|, %Q|ANYENV_ROOT="#{prefix}"|
prefix.install Dir["*"]
end
def caveats; <<-EOS.undent
Add the following to the ~/.bashrc or ~/.zshrc file:
echo 'eval "$(anyenv init -)"' >> ~/.your_profile
EOS
end
test do
shell_output("eval \"$(#{bin}/anyenv init -)\" && anyenv version")
end
end
mumoshu/homebrew-anyenvというGitHub上のGitレポジトリに置くと、brew tap mumoshu/anyenv
で取り込めるようになります。brew tapの引数に渡すtapの名前のほうでは、Gitレポジトリ名にある homebrew-
というプレフィックスが省略されることに注意。
Formula書き方は、Homebrewのドキュメント「Formula Cookbook」のとおりです。
Formulaの説明文を指定する desc
メソッドは、古いHomebrewだとNoMethodErrorになってしまうようなので注意。上のコード例では if respond_to? :desc
で、呼べるときだけ説明文を指定するようにして雑に対処してます。実際、Travis CI上のMac OS X環境に入っているHomebrewだとNoMethodErrorになったので、やっておいて損はないかと思ってます。