🤢

DartでCLIツールを作ってHomebrewで公開するまで

2024/05/26に公開

Codemagicをローカルで起動させるCLIツールを作った時の備忘録です。

https://github.com/imajoriri/codemagic-builder

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