自作ライブラリを brew install してみた


概要

最近、MacOSを使い始めました。
brew install めっちゃ便利やん、とか思いつつ、ジョーク・コマンドである slcmatrix で遊んでいました。

そんな時、「令和をアスキーアートでターミナルに表示したい」と思い、ライブラリを自作してみました。

もし、この記事を参考に自作ライブラリを作成してくださる方がいれば、ライブラリ名やファイル名を適宜変更してみてください。

基本的には、Homebrew の公式ドキュメントを参照しています。

実行コマンド

下記コマンドを実行すると、「令和」とターミナルで表示できます。

$ brew tap NaotoFujihiro/reiwa
$ brew install reiwa
$ reiwa

実行結果

リポジトリ構成

作成したライブラリは、下記リポジトリに格納しています。

  1. reiwa

C++で記述しているので、下記のファイルが必要です。

  • reiwa.cpp
  • reiwa.1
  • Makefile
  1. Homebrew-reiwa

自作ライブラリを brew install するために必要です。

  • reiwa.rb

ライブラリの作成

reiwa.cppMakefile などの必要なファイルを作成します。

reiwa.cpp
// Copyright (c) 2019 Naoto Fujihiro <[email protected]>

#include <iostream>

int main() {
  std::cout << "     ■                  " << "\n";
  std::cout << "    ■■■        ■■■      " << "\n";
  std::cout << "   ■■ ■■     ■■■   ■■■■■" << "\n";
  std::cout << "   ■   ■■      ■   ■   ■" << "\n";
  std::cout << " ■■     ■■     ■   ■   ■" << "\n";
  std::cout << "■■ ■■■■■ ■■  ■■■■■■■   ■" << "\n";
  std::cout << "               ■■  ■   ■" << "\n";
  std::cout << " ■■■■■■■■■    ■■■  ■   ■" << "\n";
  std::cout << "    ■    ■    ■■ ■ ■   ■" << "\n";
  std::cout << "    ■    ■   ■ ■   ■   ■" << "\n";
  std::cout << "    ■    ■   ■ ■   ■   ■" << "\n";
  std::cout << "    ■    ■     ■   ■■■■■" << "\n";
  std::cout << "    ■  ■■■     ■   ■   ■" << "\n";
  std::cout << "    ■          ■        " << "\n";
}
Makefile
CC=g++
CFLAGS=-O

reiwa: reiwa.cpp
    $(CC) $(CFLAGS) -o reiwa reiwa.cpp

ソースコード一式を、予め作成しておいた reiwa リポジトリにpushします。

最後に、tag付けします。

$ git tag 0.0.1
$ git push origin 0.0.1

Formulaの作成

それでは、 brew install できるようにしていきます。

まずは、Formulaを作成します。

$ brew create https://github.com/NaotoFujihiro/reiwa/archive/0.0.1.tar.gz

コマンドを実行すると、 reiwa.rb という名前で、Formulaが作成されます。

保存場所は、
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/
です。

なお、sha256https://github.com/NaotoFujihiro/reiwa/releases からダウンロードしてきた、tag付けされた tar.gzファイルに対し、

$ openssl dgst -sha256 ~/Downloads/reiwa-0.0.1.tar.gz
SHA256(/Users/Tachikoma/Downloads/reiwa-0.0.1.tar.gz)= 

と実行すると、取得することができるので、それを記述します。

最後に、作成したFormulaを、予め作成しておいた Homebrew-reiwa リポジトリにpushします。

これで、brew install reiwa できるようになりました!

蛇足

ソースコードを修正して再度pushした場合など、既に brew tap したライブラリを削除したい時もあるかと思います。

そんな時は、

$ rm -rf /Users/<ユーザー名>/Library/Logs/Homebrew/reiwa
$ rm /Users/<ユーザー名>/Library/Caches/Homebrew/downloads/hogehoge--homebrew-reiwa-0.0.1.tar.gz\
$ rm -rf /usr/local/Homebrew/Library/Taps/naotofujihiro/

などのコマンドで、キャッシュやダウンロードファイルを削除してみてください。

はまったところ

homebrew-reiwa リポジトリと、 reiwa リポジトリのどちらにどのファイルを置けば良いのかという部分で混乱し、なかなか make が通らなかった。

参考記事

https://qiita.com/hayashier/items/dd699857253b1f433655
https://qiita.com/masawada/items/484bbf83ef39cad7af74
https://github.com/masawada/homebrew-chikubeam
https://github.com/masawada/chikubeam
https://qiita.com/mountcedar/items/f10161d4e483aa8c1283
https://qiita.com/lrf141/items/9ba070a2a1c3e5faf71c
https://qiita.com/phi/items/b6a8073eca1a343204fb
cf. https://github.com/Homebrew/brew