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

自分用のツールを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


『 Swift 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。