Help us understand the problem. What is going on with this article?

Swift製のコマンドラインツールをbrewでインストールできるようにする

More than 3 years have passed since last update.

自分用のツールをbrewで入れられるようにした時の記録です。

ちなみにそのツールはXcodeのプロジェクトをxcで開くだけおもちゃです :wink:
https://github.com/tattn/xc

Swiftファイルをシェルスクリプトのように動かす

今回はビルドせずに、Swiftファイルをインタプリタとして動かすことにしました。
SwiftもBashスクリプトやRubyスクリプトのように shebang (#!で始まるやつ) をファイルの頭に付けることで、インタプリタでサクッと実行ができます。

$ vi hello
#!/usr/bin/env swift

print("こんにちは世界")

実行権限を与えます。

$ chmod a+x hello

これで実行できます。

$ ./hello

Homebrew用のリポジトリを作成する

本家Homebrewにプルリクエストを送らずに自作ツールをインストールできるようにするためには、brew tapでリポジトリを登録する必要があります。
次は、そのために必要なリポジトリを作成します。

まず、以下のようにツール本体をGithubにpushします。
https://github.com/tattn/xc

そして、Githubのリリース機能を使い、brewでインストールするtar.gzを作成します。
https://github.com/tattn/xc/releases/tag/0.0.1

tar.gzのリンクをコピーして、以下のコマンドでbrewのFormulaのテンプレートを作成します。

$ brew create コピーしたURL

不要な記述があるので、以下のように編集します。(適宜内容を変更してください)

xc.rb
class Xc < Formula
  desc "Just open a Xcode project :-)"
  homepage "https://github.com/tattn/xc"
  url "https://github.com/tattn/xc/archive/0.0.1.tar.gz"
  sha256 "053e959fe4d8994c96f629d01d7153ad81699f8d0a67cc984032e081719df673"

  def install
    bin.install "xc"
  end
end

installメソッドの中でインストール方法を記述します。
ここで、makeコマンドなどを呼び出してビルドすることもできます。

brew installしたものは/usr/local/Cellar以下に展開されます。
bin.installを使用するだけで、Cellar内から/usr/local/binにシンボリックリンクを作成することができます。
今回はSwiftファイルを配置するだけで良いので、bin.installを使用しました。

できたファイルをGithubにpushします。
この時のリポジトリ名には命名規則があり、

homebrew-ツール名

にする必要があります。

このような感じです。
https://github.com/tattn/homebrew-xc

正しく設定が出ていれば、これで完了です。

インストールする

tapコマンドでリポジトリを登録します。

$ brew tap {ユーザー名}/{homebrew-を除いたリポジトリ名}

例えば、
$ brew tap tattn/xc

インストールします。

$ brew install {homebrew-を除いたリポジトリ名}

例えば、
$ brew install xc

これで、どこでもすぐにインストールすることができるようになりました :tada:

参考

HomeBrewのFormulaを作ってみた
https://freedom-man.com/blog/homebrew-formula/

Swift2で作るコマンドラインツール
http://techlife.cookpad.com/entry/2015/11/09/150248

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away