LoginSignup
14
14

More than 5 years have passed since last update.

anyenvをHomebrewでインストールできるようにしてみた

Last updated at Posted at 2015-11-03

使い方

$ 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になったので、やっておいて損はないかと思ってます。

14
14
0

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
14
14