🤢
DartでCLIツールを作ってHomebrewで公開するまで
Codemagicをローカルで起動させるCLIツールを作った時の備忘録です。
Dartプロジェクトの環境構築
Dartプロジェクトを作成する。
dart create -t console-full my_cli_tool
コンパイルする。
dart compile exe bin/my_cli_tool.dart -o my_cli_tool
Homebrew
- 開発用とインストール用のリポジトリが必要。
- 開発用のリポジトリを
my_cli_tool
とした時、インストール用はhomebrew-my_cli_tool
になる。
- 開発用のリポジトリを
- 開発用は普通のDartプロジェクト。インストール用はbrew tapで作成したrubyファイルのみにする。
Formula
rubyのインストールスクリプト。
-
url
にはインストールするリポジトリを指定する。今回は開発用リポジトリのtagのtarballを指定している。 -
sha256
にはtarballのsha256を指定する。 -
install
メソッドのbin.install "hoge"
はhogeファイルを/opt/homebrew/bin/
にインストールする。/opt/homebrew/bin/
にPATHが通っていればインストールしたhoge
コマンドが使える。
class MyCliTool < Formula
desc ""
homepage "https://github.com/imajoriri/my_cli_tool"
url "https://github.com/imajoriri/my_cli_tool/archive/refs/tags/0.0.1.tar.gz"
sha256 "sha256"
license ""
def install
bin.install "my_cli_tool"
end
test do
system "false"
end
end
手元でインストールして試してみる。
-
brew tap user/repo
:/opt/homebrew/Library/Taps/user/homebrew-repo
にFormulaをインストール
brew untap user/repo
brew tap user/repo
brew install repo
バージョンアップ
dart compile exe bin/main.dart -o my_cli_tool
- githubのreleaseを作成なり、URLを取得できる形にする
- ハッシュを取得する。
- brewリポジトリのFormulaを更新する。
brew update && brew upgrade my_cli_tool
curl -L -o output.tar.gz https://github.com/...tar.gz
shasum -a 256 output.tar.gz
Discussion