cliマネージャ "afx" を試す
目次
b4b4r07/afx: 📦 Package manager for CLIを使ってみる。
yamlファイルをもとに、宣言的にツールのインストールができるらしい。zplugの作者の作。 現状では GitHub / GitHub Release / Gist / HTTP (web) / Local からのインストールに対応している。
インストール
Goで書かれている。 go install でもインストールできるようだが、
インストールスクリプトが用意されていたので今回はそちらを試す。
curl -sL https://raw.githubusercontent.com/b4b4r07/afx/HEAD/hack/install | bash
実行したところ、インストールスクリプトが上手く動かなかったため、PRを出しておいた。(2023/5/18 追記: マージされた)
また、コマンドを実行したところ設定ディレクトリが存在せず、エラーとなったため、 ~/.config/afx を作成した。
なお、エラーになるのは不自然だと思ったので、こちらもPull-requestを作成しておいた。(2023/5/18 追記: マージされた)
この後、 .zshrc に以下の2行を追記する。
# set up afx
type afx > /dev/null 2>&1 && eval "$(afx init)"
type afx > /dev/null 2>&1 && eval "$(afx completion zsh)"2023/5/18 追記: 上記の設定では補完が出ないことが判明した。上の2行の下に以下を追加すれば無事補完が効いた(バグかも)
type afx > /dev/null 2>&1 && compdef _afx afxneovimをビルドしてみる
以下のyamlを ~/.config/afx/github.yaml に配置する。
github:
- name: neovim/neovim
  description: Vim-fork focused on extensibility and usability
  owner: neovim
  repo: neovim
  branch: master
  with:
    depth: 1
  command:
    build:
      steps:
      - make CMAKE_BUILD_TYPE=RelWithDebInfo
    env:
      EDITOR: nvim
    alias:
      vi: nvim
    link:
      - from: build/bin/nvimこの状態で afx install を実行し、ビルドに成功した。

gitリポジトリは ~/.afx/github.com 以下に展開されていた。
このうち、yamlの link で指定したバイナリが ~/bin へとリンクされていた。

パッケージの更新
NeovimのHEADを追いかけ続けるために、 afx update で最新にアップデートしたい。
しかし、 afx update を実行しても git fetch をしている様子はなかった。
ソースを確認したところ、TOODコメントが記載されていた。 今後の実装に期待、または自分で実装をしたい。

まとめ
ビルドの自動化ができて便利そうだった。 今後はchezmoiとの連携、各種環境でのビルドに取り組みたい。
にしても、 afx は検索ノイズが多かった。
References
- 新しいコマンドラインツール向けのパッケージマネージャ | tellme.tokyo
- neovim/neovim: Vim-fork focused on extensibility and usability
- b4b4r07/afx: 📦 Package manager for CLI
- AFX
コメント
Github Issue と連動しています。