💧

aqua-registry の全ツールを使えるようにする

2022/02/26に公開

CLI ツールを YAML でバージョン管理できるツール aqua を開発しています。

https://aquaproj.github.io/

https://zenn.dev/topics/aquaclivm

今回は aqua/aqua-registry の全ツールを使えるようにする方法を紹介します。

aqua-registry には v1.5.0 時点で 418 個のツールが登録されています。
この中から必要なツールをピックアップし、 dotfiles で管理するというのも一つのやり方ですが、以下の手順で全ツールを使えるようになります。

  1. https://github.com/aquaproj/aqua-registry を checkout
  2. aqua-all.yaml を環境変数 AQUA_GLOBAL_CONFIG に追加
  3. aqua i -l -a を実行
$ git clone https://github.com/aquaproj/aqua-registry
$ export AQUA_GLOBAL_CONFIG="$PWD/aqua-registry/aqua-all.yaml:$AQUA_GLOBAL_CONFIG"
$ aqua i -l -a # symbolic link だけが作られ、ツールの download はされない

こうすると全てのツールが使えるようになります。
aqua-registry では Renovate を使って update をしているので、全ツールはほぼ最新のはずです。

aqua i で AQUA_GLOBAL_CONFIG を参照するには、 -a option が必要です。

Lazy Install

使うかどうかもよくわからないツールを 400 個以上もインストールしたくはないとは思いますが、 aqua では Lazy Install によって本当に必要なツールだけ Install することが出来ます。
上記のコマンド aqua i -l -a では PATH 配下に symbolic link だけが作成され、ツールを実行したタイミングではじめて install, update が実行されるようになっています。

定期的な更新

aqua-registry の更新を反映させるには定期的に以下のことを行う必要があります。

  1. https://github.com/aquaproj/aqua-registry を checkout
  2. aqua i -l -a を実行

cron などで定期的に実行するようにするとよいでしょう。

Stable なものを使いたい場合

上の手順だと main branch を使うことになるので、 stable とは言えません。
最新の Release を checkout するようにすると stable になるでしょう。

特定のツールに関して最新ではないバージョンを指定したい場合

特定のツールに関して最新ではないバージョンを指定したい場合、 aquq-all.yaml とは別に aqua.yaml を用意して上書きすることが出来ます。
AQUA_GLOBAL_CONFIG には複数の aqua.yaml を : つなぎで指定することが出来、左側のファイルのほうが優先されます(PATH と同じです)。

特定のツールは aqua で管理したくない場合

aqua でインストールするとなぜかうまく動かないなど、特定のツールを aqua で管理したくない場合、 aqua i -l -a を実行したあとに symbolic link を消すというワークアラウンドがあります。

e.g. hub を管理外にする

$ aqua i -l -a
$ rm "$(which hub)" # aqua が生成した hub の symbolic link を削除
# full path を指定する場合
# $ rm "${AQUA_ROOT_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/aquaproj-aqua}/bin/hub"

さいごに

以上、 aqua-registry の全ツールを使えるようにする方法を紹介しました。

Discussion